© 2025 anveloper.dev
GitHub·LinkedIn·Contact

목차

  • 문제
  • 입력
  • 출력
  • 예제
  • 풀이
  • 코드
  • 복잡도
풀이 목록으로 돌아가기

BOJ 2997 - 네 번째 수

2025-07-15
BOJ
브론즈 III
python
원본 문제 보기
수학
구현
사칙연산

문제

BOJ 2997 - 네 번째 수

네 수가 등차수열을 이루는데, 이 중 하나가 빠져 있다. 나머지 세 수가 주어질 때 빠진 네 번째 수를 구하라.

입력

세 정수가 공백으로 구분되어 주어진다. 순서는 무작위이다.

출력

빠진 네 번째 수를 출력한다.

예제

입력출력
4 6 82
10 1 47

풀이

세 수를 정렬한 뒤, 인접한 수들의 차이를 비교하여 빠진 수의 위치를 찾는다.

  1. 입력받은 세 수를 오름차순으로 정렬한다
  2. 인접한 두 차이 n1 = b - a, n2 = c - b를 계산한다
  3. 두 차이가 같으면 공차가 동일하므로, c + n1이 빠진 수이다 (맨 뒤에 빠짐)
  4. 차이가 다르면 더 큰 차이가 있는 쪽에 수가 빠져 있다
    • n2가 더 크면 b와 c 사이에 빠짐: c - min(n1, n2) 출력
    • n1이 더 크면 a와 b 사이에 빠짐: b - min(n1, n2) 출력

핵심 아이디어: 등차수열에서 빠진 수가 있으면 공차의 2배가 되는 간격이 생기므로, 정렬 후 차이를 비교하면 빠진 위치를 알 수 있다.

코드

a, b, c = sorted(list(map(int, input().split())))
 
n1, n2 = b - a, c - b
if n1 == n2:
    print(c + n1)
else:
    n = min(n1, n2)
    if n2 != n:
        print(c - n)
    else:
        print(b - n)

복잡도

  • 시간: O(1) — 세 수의 정렬과 비교만 수행
  • 공간: O(1) — 고정 크기 변수만 사용