본문 바로가기

컴퓨터 관련

[알고리즘] 백준 3009번 문제 풀이

728x90
반응형

1. 문제 보기

해당 문제는 문제 링크를 통해 보실 수 있습니다.

2. 풀이 코드

#include <stdio.h>
int main(void) {

    int coordinate[3][2];
    int x, y;

    //나머지 좌표값 입력
    if (scanf("%d %d", &coordinate[0][0], &coordinate[0][1]) == NULL)
        return 0;
    if (scanf("%d %d", &coordinate[1][0], &coordinate[1][1]) == NULL)
        return 0;
    if (scanf("%d %d", &coordinate[2][0], &coordinate[2][1]) == NULL)
        return 0;

    //X 좌표 찾기
    if (coordinate[0][0] == coordinate[1][0])
        x = coordinate[2][0];
    else if (coordinate[0][0] == coordinate[2][0])
        x = coordinate[1][0];
    else
        x = coordinate[0][0];

    //Y 좌표 찾기
    if (coordinate[0][1] == coordinate[1][1])
        y = coordinate[2][1];
    else if (coordinate[0][1] == coordinate[2][1])
        y = coordinate[1][1];
    else
        y = coordinate[0][1];

    printf("%d %d\n", x,y);

    return 0;
}

3. 문제의 요구 조건

  • 시간 제한: 1초
  • 출력 조건: 주어진 좌표를 가지고, 평행하는 직사각형을 만들 수 있는 좌표 찾기

시간 제한과 관련하여

  • 이 문제는 시간 제한이 1초밖에 되지 않습니다.
  • 즉, 반복문 같은 것은 쓸 수도 없다는 이야기가 됩니다.
  • O(1) 시간안에 정답을 찾아야 합니다.

4. 문제 풀이

문제 이해하기

  • 문제에서 제시한 첫번째 예시와 조건을 사진으로 옮겨보았습니다.

  • 이 문제 정답은, 위 사진 속에 보이는 (?,?) 좌표에 들어갈 값을 찾는 것입니다.

X 좌표 찾기

  • 그럼, X 좌표를 찾아보겠습니다.

  • 위 사진 속에서, 화살표와 같이 X 좌표가 같아짐을 알 수 있습니다.
  • 즉, 어떤 X좌표가 다른 X좌표와 같게된다면, 다른 좌표는 ?에 같게되는 좌표임을 알 수 있습니다.
  • 이것을 이용해서, 서로 같아지는 좌표를 찾고, 남은 좌표는 ?에 해당하는 좌표로 저장합니다.

Y 좌표 찾기

  • X 좌표를 찾는 방법과 마찬가지로 Y 좌표를 찾아줍니다.

  • Y 좌표도 X 좌표와 마찬가지로, 서로 같지 않은 좌표를 ?에 해당하는 좌표로 저장하면 됩니다.
반응형