티스토리 뷰
[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에서 괄호 안의 문자를 찾아 해당 문자의 개수를 반환한다.
'파이썬 스킬업 > 백준 알고리즘 연습' 카테고리의 다른 글
백준 4153 [파이썬] 직각삼각형 : 피타고라스의 정리 (0) | 2020.07.21 |
---|---|
백준 1085 [파이썬] 직사각형에서 탈출 (0) | 2020.07.19 |
백준 9020 [파이썬] 골드바흐의 추측 : 차집합 연산 활용 (1) | 2020.07.17 |