Programming/백준
백준 17944 - 퐁당퐁당 1 (파이썬)
pental
2025. 3. 8. 03:04
https://www.acmicpc.net/problem/17944
풀이
특정 규칙을 따라 숫자가 증가하고 감소하는 패턴을 이루는 수열에서 특정 위치의 값을 찾는 문제이다.
예를 들어, N = 3 일 때, 수열의 형태는 다음과 같다.
1, 2, 3, 4, 5, 6, 5, 4, 3, 2
이 패턴은 아래와 같이 형성
- 1부터 2N 까지 증가
- 2N-1 부터 2까지 감소
시간 복잡도 분석
- 리스트 A 의 길이는 4N - 2 이므로, 리스트 생성에 O(N) 의 시간이 소요
- 이후의 연산(인덱스 조회 및 나머지 연산)은 O(1) 이므로, 전체 시간 복잡도는 O(N)
- 하지만 T 의 크기가 클 경우에도 나머지 연산을 통해 효율적으로 값을 찾을 수 있어 T 가 커질 때도 성능이 저하되지 않는다.
코드
# 백준 17944 - 퐁당퐁당 1
# 분류 : 구현, 시뮬레이션
N, T = map(int, input().split())
A = []
for i in range(1, 2 * N + 1) :
A.append(i)
for i in range(2 * N - 1, 1, -1) :
A.append(i)
T -= 1
T %= (4 * N - 2)
print(A[T])