문제 출처 (BRONZE Ⅲ)
https://www.acmicpc.net/problem/34115
풀이
1부터 N까지의 카드가 각각 두 장씩 있다.
index 함수를 활용하면 가장 앞에 있는 인덱스가 출력이 되니
첫 번째 카드의 인덱스를 firstNum 변수에 저장한 뒤, 0부터 해당 인덱스까지 빈 숫자로 채워두는 작업을 했다.
(나 같은 경우는 숫자 0으로 채웠다.)
그 상태에서 두 번째 카드의 인덱스를 lastNum에 저장했다.
마지막으로 두 카드의 인덱스의 차이에 -1을 하면 두 카드 사이에 있는 카드의 개수 k를 구할 수가 있다.
문제에서는 k 사이 카드 수 중 가장 큰 값을 요구하니 max를 활용했다.
코드
N = int(input())
X = list(map(int, input().split()))
max_k = 0
for i in range(1, N + 1):
firstNum = X.index(i)
except_X = [0] * (firstNum + 1) + X[firstNum + 1 :]
lastNum = except_X.index(i)
max_k = max(max_k, abs(firstNum - lastNum) - 1)
print(max_k)
'ALGORITHM > PYTHON' 카테고리의 다른 글
백준 BAEKJOON 34027번 제곱 수? [PYTHON/파이썬] (0) | 2025.08.21 |
---|---|
백준 BAEKJOON 34032번 /gg [PYTHON/파이썬] (0) | 2025.08.19 |
백준 BAEKJOON 33515번 노트북 세 대를 가지고 왔다 [PYTHON/파이썬] (1) | 2025.08.05 |
백준 BAEKJOON 22113번 창영이와 버스 [PYTHON/파이썬] (1) | 2025.07.29 |
백준 BAEKJOON 9339번 마라토너 [PYTHON/파이썬] (1) | 2025.07.28 |