강의로 돌아가기
이지수

실행버튼을 누를 때마다 다른 결과값이 나옵니다. 이게가능한가요?

Pycharm으로 실행했을 떄는 똑같은 케이스 값을 넣어서 실행할 시에 일정한 결과값이 나옵니다. 그러나 프로그래머스 웹에서는 실행버튼을 누를 떄마다 각기 다른 값이 나오는데 어떻게 된걸까요?

import operator
def solution(genres, plays):
    answer = []
    kind = set(genres) 
    genreNum = {}
    genrePlays = {}
    genreSum = {}
    for i in kind:
        genreNum[i] = 0
        genreSum[i] = 0
        genrePlays[i] = []

    for i in range(len(genres)):
        genreNum[genres[i]] += 1
        genrePlays[genres[i]].append(plays[i])
        genreSum[genres[i]] += plays[i]

    genreSum = dict(sorted(genreSum.items(), key=operator.itemgetter(1), reverse=True))

    for genre in genreSum.keys():
        genrePlays[genre] = sorted(genrePlays[genre])
        for i in range(2):
            try:
                M = genrePlays[genre].pop()
                answer.append(plays.index(M))
            except:
                break

    return answer
1 개의 답변
Demi

안녕하세요. 작성한 코드가 실행할때마다 다른 결과를 낸다는 걸 보니, 원소의 순서가 보장되지 않는 코드를 짜신 것 같습니다.
파이썬의 set이나 dictionary는 원소의 순서를 보장하지 않습니다.( 예외적으로 python 3.7이상에서는 dictionary가 원소의 순서를 보장함)

이에 주의해 코드를 작성해주세요.

답변 쓰기
이 입력폼은 마크다운 문법을 지원합니다. 마크다운 가이드 를 참고하세요.