티스토리 뷰

반응형

 

[Python] 백준 알고리즘 온라인 저지 3009번 : 네 번째 점

 

Python3 코드

x_nums = []
y_nums = []
for _ in range(3):
    x, y = map(int, input().split())
    x_nums.append(x)
    y_nums.append(y)

for i in range(3):
    if x_nums.count(x_nums[i]) == 1:
        x4 = x_nums[i]
    if y_nums.count(y_nums[i]) == 1:
        y4 = y_nums[i]
print(x4, y4)

 

 

Python3 코드 풀이

 

1. 작성한 코드에 대한 전체적인 내용

직사각형은 네 각의 크기가 모두 직각이고 마주 보는 두 변의 길이가 같다. 직사각형의 이러한 특성을 이용해서 x좌표로 이루어진 네 개의 수와 y좌표로 이루어진 네 개의 수에서 각각 두 개씩 같은 수를 구할 수 있다.

 

이 문제는 직사각형 네 점의 좌표에서 세 점의 좌표가 주어지면 나머지 한 개의 좌표를 출력하는 문제이다. 그래서 2개의 for문을 이용해서 x, y 좌표로 주어지는 각 좌표의 숫자 리스트에서 개수가 한 개만 있는 숫자를 찾는 방법으로 문제를 풀었다.

 

 

2. 첫 번째 for문 - x좌표, y좌표를 모은 두 개의 리스트를 생성한다.

x_nums = []
y_nums = []
for _ in range(3):
    x, y = map(int, input().split())
    x_nums.append(x)
    y_nums.append(y)

이번 문제는 x, y좌표를 나타내는 두 개의 수를 3번 입력받게 된다. 이 두 수를 입력받기 전 먼저 x_nums, y_nums라는 두 개의 빈 리스트를 생성하고 for문을 3번 반복하면서 두 수를 입력받을 때마다 각각 x_nums 리스트, y_nums 리스트에 추가하는 코드를 작성했다.

 

3.두번째 for문 - 두 개의 리스트에서 개수가 한 개인 요소를 찾아서 출력한다.

for i in range(3):
    if x_nums.count(x_nums[i]) == 1:
        x4 = x_nums[i]
    if y_nums.count(y_nums[i]) == 1:
        y4 = y_nums[i]
print(x4, y4)

두 리스트가 모두 3개의 요소로 이루어졌기 때문에 0~2까지 숫자 범위를 range 함수를 이용해서 생성하였다. 이 숫자 범위는 for문의 반복 범위가 되어 두 리스트의 인덱스로 사용하였다.

 

for문이 반복되는 동안 count 함수를 이용해서 두 개의 리스트에서 각 인덱스에 위치한 요소의 개수가 한 개인지를 찾았다. if조건식으로 두 개의 리스트에서 count 개수가 1인 요소를 각각 x4, y4 변수에 선언하여 출력하였다.

 

count 함수는 문자열, 리스트와 같은 반복 가능한 iterable 자료형에서 사용할 수 있다. array.count(x) 형태로 사용하고 array에서 괄호 안의 문자를 찾아 해당 문자의 개수를 반환한다.

 

반응형
댓글
반응형