a

조회수 3270회
  • (•́ ✖ •̀)
    알 수 없는 사용자

2 답변

  • import random
    from itertools import chain
    from collections import Counter
    
    lottoContainer = (random.sample(range(1, 46), 6) for i in range(10))    #  로또 번호
     중복되지 않게 6개의 숫자로10번 생성
    numbers = chain.from_iterable(lottoContainer)    # 정렬 및 카운트를 위해 flatten 처리 
    result = sorted(sorted(Counter(numbers).most_common(), key=lambda pair:pair[0], reverse=False), key=lambda pair:pair[1], reverse=True)    # 정렬 및 카운트 처리
    result
    
    Out[4]:        # (숫자, 카운트) 
    [(19, 4),
     (20, 4),
     (32, 4),
     (2, 3),
     (12, 3),
     (15, 3),
     (26, 3),
     (31, 3),
     (4, 2),
     (11, 2),
     (13, 2),
     (14, 2),
     (22, 2),
     (27, 2),
     (30, 2),
     (33, 2),
     (42, 2),
     (44, 2),
     (1, 1),
     (3, 1),
     (5, 1),
     (7, 1),
     (9, 1),
     (21, 1),
     (24, 1),
     (28, 1),
     (29, 1),
     (34, 1),
     (37, 1),
     (40, 1),
     (43, 1)]
    
    • 헉... 저는 아직 list 와 반복문 for while 밖에 배우지 않았는데 ㅎㅎ... 저에게는 굉장히 낯서네요 일일히 공부해야봐야겠어요 정말 감사합니다 :-) 알 수 없는 사용자 2017.5.11 21:36
    • lottoContainer = (random.sample(range(1, 46), 6) for i in range(10)) # 로또 번호 중복되지 않게 6개의 숫자로10번 생성 할 때 정렬 할 수 있는 방법이 있을까요?? list가 아닌것 같아서 정렬이 안되네요 ㅜㅠㅠ 알 수 없는 사용자 2017.5.14 14:59
    • list가 아니라 generator 라서 그럽습니다. list를 사용하면 불필요한 메모리 낭비가 되므로 많은 경우 generator로 하는 것이 낫습니다. lottoContainer = (random.sample(range(1, 46), 6) for i in range(10)) 대신 lottoContainer = [random.sample(range(1, 46), 6) for i in range(10)] 이렇게 하세요 정영훈 2017.5.14 16:48
    • 정렬은 [sorted(random.sample(range(1, 46), 6)) for i in range(10)] 와 같이 random.sample(range(1, 46), 6)을 sorted 하면 됩니다. 정영훈 2017.5.14 17:12
  • 리스트에 포함된 요소 x의 개수 세기(count)

    count(x)는 리스트 내에 x가 몇 개 있는지 조사하여 그 개수를 돌려주는 함수이다.

    카운트 함수 사용하면 되지 않을까요??

    • count를 써봤는데 각각 (1회에 몇번나왔는지) 는 되는데 700회에 몇번나왔는지는 좀처럼 안되네요 ㅜㅜ.. 알 수 없는 사용자 2017.5.11 09:26

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)