[BOJ][Python] 백준 1111번: IQ Test
1일 1PS 39일차!
📚 문제
골드 3
- 많은 분기를 빠짐없이 처리해야한다.
💡 풀이 과정
- N = 1 일 때, N = 2 이면서 값이 동일할 때, N = 2 이면서 값이 동일하지 않을 때, N = 3 이상이면서 값이 모두 동일할 때, N = 3 이상이면서 값이 모두 다르고 규칙이 동일할 때, N = 3 이상이면서 값이 모두 다르지만 규칙이 동일하지 않을 때. 로 구분지어야한다.
- N = 1 일때는 항상 A 가 출력되어야한다.
- N = 2 이며 값이 동일할 경우 동일한 값이 출력되어야한다.
- N = 2 이며 값이 동일하지 않을 경우 A 가 출력되어야한다.
- N = 3 이상이며 값이 동일할 경우 동일한 값을 출력해야한다.
- N = 3 이상이며 값이 동일하지 않을 경우 규칙을 판단해서 출력해야한다.
- 이때 일차방정식을 사용해 A, B 의 값을 얻어 마지막까지 동일한 규칙인지 확인하고 다음 수 혹은 B 를 출력한다.
📌포인트
- len(set(num_list))
- num_list 속의 값들이 모두 동일함을 확인하기 위해서 모든 값을 비교하지 않고 Set 을 통해 확인한다.
💻 코드
N = int(input())
if N == 1:
print("A")
elif N == 2:
num1, num2 = map(int, input().split())
if num1 == num2:
print(num1)
else:
print("A")
else:
num_list = list(map(int, input().split()))
if num_list[0] == num_list[1]:
if len(set(num_list)) == 1:
print(num_list[0])
else:
print("B")
else:
A = (num_list[2] - num_list[1]) //(num_list[1] - num_list[0])
B = (num_list[1] - A * num_list[0])
flag = True
for i in range(1, N - 1):
if num_list[i] * A + B != num_list[i+1]:
flag = False
break
if flag:
print(num_list[N-1] * A + B)
else:
print("B")
댓글남기기