ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [BOJ] 3009번
    Algorithm/Baekjoon Online Judge 2022. 3. 15. 12:13
    728x90

    https://www.acmicpc.net/problem/3009

     

    3009번: 네 번째 점

    세 점이 주어졌을 때, 축에 평행한 직사각형을 만들기 위해서 필요한 네 번째 점을 찾는 프로그램을 작성하시오.

    www.acmicpc.net

     

    Python3

     

    code1

    if __name__ == '__main__':
        points = []
        for _ in range(3):
            x, y = map(int, input().split())
            points.append((x, y))
    
        for x, y in points:
            for x1, y1 in points:
                if (x, y1) not in points:
                    print(x, y1)
                    break
    

    세점이 주어졌을 때 한점을 찾기 위해서는 주어진 x, y 좌표 값에 대해서 없는 x 좌표 값, y 좌표 값의 조합을 찾아야한다. 이를 위해서 먼저 3개의 점의 x, y 좌표값을 튜플로 배열에 모두 저장했다.

    2차 반복문을 통하여 바깥 반복문에서는 x좌표 값을 안쪽 반복문에서는 y좌표 값을 뽑아 튜플로 만들고 이 튜플이 3개의 점의 좌표 튜플이 들어있는 points 리스트에 있는지 확인했다. 만약 이 점이 points안에 없다면 구해야하는 점이되므로 이를 print하고 반복문을 종료했다.

     

    code2

    x_num = []
    y_num = []
    
    for _ in range(3):
        x, y = map(int, input().split())
        x_num.append(x)
        y_num.append(y)
    
    for i in range(3):
        if x_num.count(x_num[i]) == 1:
            x = x_num[i]
        if y_num.count(y_num[i]) == 1:
            y = y_num[i]
    print(x, y)

    이중 반복문을 쓰지 않고 좀 더 간단한 방식으로 코드를 구현했다. 단순히 개수를 세는 것인데 3개의 점을 받아 x, y좌표가 1개씩 밖에 없는 좌표 값을 선택하는 방식이다. 먼저 3개의 점을 x좌표 리스트, y좌표 리스트에 입력 받고, 각 리스트를 돌면서 개수가 한개인 좌표에 대해 x, y값을 지정했다.

     

    728x90

    'Algorithm > Baekjoon Online Judge' 카테고리의 다른 글

    [BOJ] 3053번  (0) 2022.03.16
    [BOJ] 4153번  (0) 2022.03.16
    [BOJ] 9020번  (0) 2022.03.14
    [BOJ] 4948번  (0) 2022.03.12
    [BOJ] 11653번  (0) 2022.03.12

    댓글

Designed by Tistory.