알고리즘/백준 문제풀이

[Python/BOJ] 백준 1713 후보 추천하기_구현

개발자 덕구🐾 2022. 9. 2. 16:58
728x90

이걸 어떻게 풀지...고민을 많이 했다.

dict? defaultdict? 

하다가 점수와 시간을 같이 dict에 넣어서 정렬해서 하려면 머리가 복잡해서 

이게 맞나 찾아봤는데 그냥 list 2개를 쓰면 되는거였다. 

 

 

picture 리스트와 score 리스트를 index로 연결하여 

이미 사진틀에 있다면 해당 인덱스의 score를 1증가시킨다.

 

 

 

만약 없다면 

- 자리가 없다면 -> picture에서 하나 빼고, score에서 하나 빼고 

- 자리가 있다면 -> picture에서 하나 추가하고, score에서 하나 추가한다.

 

 

 

 

 

코드 : 

if __name__=="__main__" :
    n = int(input())
    vote = int(input())
    student = list(map(int,input().split()))
    picture = []
    score = [] 
    # picture과 score이 index로 연동 
    
    for i in range(vote) :
        # i 번째 사람이 투표 
        
        # 이미 사진틀에 있음 
        if student[i] in picture : 
            # 사진틀을 돌면서 
            for j in range(len(picture)) :
                if student[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(student[i])
            score.append(1)
    picture.sort()
    print(*picture)

 

 

 

 

 

 

참고 블로그 : 

https://velog.io/@jajubal/%ED%8C%8C%EC%9D%B4%EC%8D%AC%EB%B0%B1%EC%A4%80-1713-%ED%9B%84%EB%B3%B4-%EC%B6%94%EC%B2%9C%ED%95%98%EA%B8%B0

 

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

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

velog.io

 

반응형