innn

백준 3009번 : 네 번째 점 본문

코딩 테스트/파이썬 코딩테스트

백준 3009번 : 네 번째 점

33삼 2022. 10. 2. 15:09

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

 

3009번: 네 번째 점

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

www.acmicpc.net

 

 

문제

 

먼저 문제를 읽고 주어진 예제 값을 통해 그림을 그려서 문제를 파악했다.

예제 입력이 2개 주어졌는데 직사각형이 완성 되려면 x값끼리 두쌍으로 같아야 하고 

y값끼리 두 쌍으로 같아야 한다는 규칙을 찾을 수 있었다. 

 

난 파이썬 초보자라서 if문 밖에 생각이 나지 않아서 일단 if문으로 x값끼리 y는 y값 끼리 비교해서 동일한 값이 한 쌍씩 나오도록 하는 값을 찾아주었다.

 

최종 코드 1

 

무언가 리스트 배열로 나열해서 동일한 값 비교로 쏙 뽑아오는 식도 있을 것 같은데 파이썬 문법의 최소한만 알고 있어서 그런지 리스트는 사용할 수 없었다. 그래서 다른 제출자들의 답도 찾아 보았다!

 

최종 코드 2  (더 간단한 답입니다)

 

1. 먼저 x좌표, y좌표를 한 번씩 받아서(*for문 이용) 리스트로 배열해준다. 

 

x_nums = []     / x값 빈 리스트

y_nums = []    / y값 빈(깡통) 리스트

for_ in range(3) :

      x, y = map(int, input().split())

      x_nums.append(x)

      y_nums.append(y)

 

x와 y값을 받는 두 개의 빈 리스트를 생성해준다. 

for문을 in range(3)으로 3번 반복하면서 두 수를 입력받을 때마다 각각 x_nums와 y_nums에 추가하는 코드를 작성한다.

 

2. 두 개의 리스트에서 한 개만 존재하는 요소(element)를 찾아서 출력한다.

 

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개의 요소로 이루어져있어서 range(3)으로 (0부터 3-1범위까지 반복하는 함수)를 생성해서 for문을 돌려준다. 이 숫자 범위는 for문의 반복 범위로 0, 1, 2 리스트의 인덱스로 사용한다.

 

count() 함수를 이용해서 두 개의 리스트 중 1개만 존재하는 요소를  찾아준다. 이때 이용한 건 if문.

 

count 함수는 문자열, 리스트와 같은 반복가능한 자료형에서 사용할 수 있다.

'코딩 테스트 > 파이썬 코딩테스트' 카테고리의 다른 글

2562번 : 최댓값  (0) 2022.10.04
10872번 : 팩토리얼  (0) 2022.10.04
백준 1085번 : 직사각형에서 탈출  (0) 2022.10.02
백준 2439번 : 별 찍기 - 2  (0) 2022.09.30
백준 2438번 : 별 찍기 - 1  (1) 2022.09.30