728x90
난이도 : 골드3
풀이일 : 07204
https://www.acmicpc.net/problem/1111
링크로 이동하기 귀찮은 분들을 위한 문제 캡쳐
링크로 이동하시면 더 많은 예제가 있습니다.
풀이 코드
import sys
# 조건 외 항 검사
def check(x, y):
for i in range(N-1):
if num[i] * x + y != num[i+1]:
return print('B')
return print(num[-1] * x + y)
N = int(sys.stdin.readline().strip())
num = list(map(int, sys.stdin.readline().split()))
# 숫자가 2개 이하인 경우
if N <= 2:
if N > 1 and num[0] == num[1]:
print(num[0])
else:
print('A')
# 숫자가 3개 이상이면 a, b 구하기
else:
if not num[1] - num[0]:
a = 1
else:
a = (num[2] - num[1]) // (num[1] - num[0])
b = num[1] - num[0] * a
check(a, b)
- check 함수 : 도출한 a, b 규칙이 적용되지 않는 항목이 있는지 검사
- 주어진 숫자가 2개 이하인 경우 별도 처리
- 주어진 숫자가 1개라면 결과는 한 숫자로 정할 수 없으므로 A 출력
- 주어진 숫자가 2개인 경우
- 두 항의 숫자가 같으면, 다음 숫자도 같은 숫자 출력
- 두 항의 숫자가 다르면, 결과는 한 숫자로 정할 수 없으므로 A 출력
- 주어진 숫자가 3개 이상이라면, 이차 방정식으로 a, b 도출
- 도출한 a, b로 check 함수 실행
- 조건 외 항목을 포함한다면 B 출력
- 아니라면 마지막 항목*a+b 출력
느낀점
그냥 수학문제인데 엄청 틀렸다. 뇌를 잠시 어디에 놓고 온 기분이었다.
요즘 시도한 파이썬 알고리즘 자꾸 실패해서 기분이 좋지 않았는데 오늘은 좋아야 하나
앞으로는 조금 더 꾸준히 풀어서 감을 잃지 않도록 해야지
'알고리즘 > 🥇 골드' 카테고리의 다른 글
백준 1916 최소비용 구하기 파이썬 풀이, 시간초과, heapq vs deque (0) | 2024.01.15 |
---|---|
백준 1717 집합의 표현 파이썬 풀이 (1) | 2024.01.14 |
백준 4386 별자리 만들기 파이썬 풀이 (0) | 2023.07.10 |
백준 13418 학교 탐방하기 파이썬 풀이, 반례 (0) | 2023.07.08 |
백준 1197 최소 스패닝 트리 파이썬 풀이 (0) | 2023.07.07 |