https://www.acmicpc.net/problem/3230
문제
첫 번째 경기와 두 번째 경기가 끝난 후에 메달권 선수들을 출력하는 문제이다.
첫 번째 경기 순서가 선수의 순서가 된다.
각 선수들의 순위는 들어왔을 때의 순위이다.
풀이
선수들의 순위가 들어왔을 때 순위로 주어지기 때문에 순위를 계속 업데이트 해주어야 한다. 따라서 순위가 리스트의 인덱스라고 한다면, 해당 인덱스에 삽입해주어야 한다. 때문에 선수를 append 로 추가하기 보다 insert 로 삽입해주어야 한다.
두 번째 경기는 슬라이싱을 이용하여 해당 순위에 따라 잘라주면 된다. 사실 아래 코드의 경우 잘라주지 않아도 정상적으로 동작하지만, 두 번째 경기 출전 선수를 명시적으로 나타내고 싶어 슬라이싱을 통해 잘라주었다.
마지막 출력은 print 를 여러번 사용해도 되지만, join을 통해 출력했다.
코드
first, second = map(int, input().split())
ranklist = []
newranklist = []
for i in range(1, first+1):
ranklist.insert(int(input())-1, i)
ranklist = ranklist[:second]
for i in range(1, second+1):
newranklist.insert(int(input())-1, ranklist[second-i])
print('\n'.join(map(str, newranklist[:3])))
'Online Judge > Baekjoon' 카테고리의 다른 글
[Baekjoon 10816] 숫자 카드 2 | Python (0) | 2024.09.03 |
---|---|
[Baekjoon 12683] Test Passing Probability (Small) | Python (0) | 2024.08.31 |
[Baekjoon 18129] 이상한 암호코드 | Python (0) | 2024.08.31 |
[Baekjoon 32174] 조커 찾기 2 | Python (0) | 2024.08.31 |
[Baekjoon 32173] 새치기 | Python (0) | 2024.08.31 |