[파이썬]백준 1713 후보 추천하기

Byeonghyeon Kim·2021년 2월 25일
0

알고리즘문제

목록 보기
17/93
post-thumbnail

링크

백준 1713 후보 추천하기


처음엔 큐를 만들어서 오래된 것을 빼주려 했는데 그렇게 하면 점수를 카운트 할 수 없어서(물론 할라면 하지만 큐를 사용하는 의미가 없다.) 포기했다.
다음은 사진틀을 만들고 추천 학생수만큼 리스트를 만들어서 학생번호를 인덱스로 해 추천수를 계산하려 했으나 괜히 리스트만 많이 만드는 것 같아 다른방법을 생각해보기로 했다.
그리고 생각한게 사진틀의 인덱스와 매치해서 추천수를 저장하는 리스트를 만들기로 했다.
설명은 주석으로 대체


정답 코드

N = int(input()) # 사진틀 개수
Vote = int(input()) # 총 추천 회수
students = list(map(int, input().split())) # 추천 학생 번호
picture = [] # 사진틀
score = [] # 사진틀 인덱스와 매치해서 추천수 저장할 리스트

for i in range(Vote):
    if students[i] in picture: # 사진틀에 있으면
        for j in range(len(picture)): #이부분 N으로 놓고 계속 틀렸음.. ㅋㅋㅋㅋㅋ
            if students[i] == picture[j]:
                score[j] += 1 #점수증가
    else: # 사진틀에 없고
        if len(picture) >= N: # 사진틀 꽉차있으면
            for j in range(N):
                if score[j] == min(score): #가장 작은 점수 찾고
                    del picture[j]
                    del score[j]
                    break #먼저 찾으면 스탑 왜냐면 오래된거일수록 인덱스 앞에 있음
        picture.append(students[i]) #새로운거 뒤에 더해줌
        score.append(1)

picture.sort()
print(' '.join(map(str, picture)))

알게된 것👨‍💻

  • 코드가 길어질수록 변수를 사용할 땐 조심하자 이미 위에서 사용하고 있는 변수를 사용하게 될수도 있다.
profile
자기 주도 개발전 (개발, 발전)

0개의 댓글