링크 : https://www.acmicpc.net/problem/1713
1713번: 후보 추천하기
첫째 줄에는 사진틀의 개수 N이 주어진다. (1 ≤ N ≤ 20) 둘째 줄에는 전체 학생의 총 추천 횟수가 주어지고, 셋째 줄에는 추천받은 학생을 나타내는 번호가 빈 칸을 사이에 두고 추천받은 순서대
www.acmicpc.net
- 문제
- 소요시간: 19분 11초

- 설계하기(접근방법)
1. 입력받기
후보 추천 리스트를 입력받는다
2. 구현하기
먼저 리스트 내에 현재 추천하는 후보가 있는지 검사한다
만약 있다면 추천수를 1 증가시킨다
만약 없다면
-> 리스트에 자리가 아직 남아있으면 append 해준다
만약 자리가 없다면 추천수가 적고 가장 오래된 후보를 del 해준다
매 회차에
추천수와 추천된 순서를 기준으로 오름차순 정렬해준다
3. 출력하기
추천된 후보를 오름차순으로 정렬하여 출력한다
- 코드(출력)
from collections import deque
n = int(input())
prefer = int(input())
order = list(map(int, input().split()))
# 후보 번호, 후보 추천수, 추천된 순서
q = []
for i in range(len(order)):
# 후보가 q 내에 있는지 없는지 체크
checker = [0,0]
for j in range(len(q)):
if q[j][0] == order[i]:
# 인덱스 넘버
checker = [1, j]
break
# 후보가 있다면
if checker[0] == 1:
q[checker[1]][1] += 1
# 후보가 없다면
else:
# 아직 비어있다면
if len(q) < n:
q.append([order[i], 1, i])
# 꽉찼다면
else:
del q[0]
q.append([order[i], 1, i])
q.sort(key = lambda x : (x[1], x[2]))
q.sort(key = lambda x : x[0])
for i in q:
print(i[0], end = ' ')
- 얻어갈 부분
1. deque 에는 sort 기능이 없다
'알고리즘(백준) > 구현' 카테고리의 다른 글
| [알고리즘/구현] 11866번 : 요세푸스 문제 0 - python (0) | 2024.05.22 |
|---|---|
| [알고리즘/구현] 13335번 : 트럭 - python (0) | 2024.03.01 |
| [알고리즘/구현] 17281번 : ⚾ - python (0) | 2024.02.29 |
| [알고리즘/구현] 3190번 : 뱀 - python (0) | 2024.02.27 |
| [알고리즘/구현] 20056번 : 마법사 상어와 파이어볼 - python (0) | 2024.02.26 |