사용자 도구

사이트 도구


ps:problems:programmers:64065

튜플

ps
링크programmers.co.kr/…
출처프로그래머스
문제 번호64065
문제명튜플
레벨Level 2
분류

기초

시간복잡도O(n)
인풋사이즈n<=1,000,000
사용한 언어Python
해결날짜2022/01/12

풀이

  • 시키는대로 하려면, 각 집합들을 크기순서대로 정렬해서, 크기 1짜리 집합의 원소를 튜플의 첫번째 원소로 두고, 크기 2짜리 집합의 원소들중 처음 등장한 것을 튜플의 두번째 원소로 두고, 이런식으로 끝까지 반복하면 된다. 다만 구현이 귀찮다
  • 보다 심플한 방법이 있다. 인풋을 그냥 플래튼시켜서 각 숫자별로 등장하는 횟수를 세어보면 튜플의 첫번째 원소는 n번, 두번째 원소는 n-1번, …, 마지막 원소는 1번 등장하게 된다. 따라서 그냥 등장 횟수의 역순으로 정렬해서 출력하면 끝. 등장 횟수를 collections.Counter을 써서 처리했다면, 등장횟수별로 정렬하는 것은 most_common 메소드를 이용해서 바로 해결할수 있다.
  • 시간복잡도는 O(|s|)

코드

"""Solution code for "Programmers 64065. 튜플".

- Problem link: https://programmers.co.kr/learn/courses/30/lessons/64065
- Solution link: http://www.teferi.net/ps/problems/programmers/64065
"""

import collections
import re

def solution(s):
    counter = collections.Counter(re.findall('\d+', s))
    return [int(num) for num, count in counter.most_common()]

토론

댓글을 입력하세요:
P X E I K
 
ps/problems/programmers/64065.txt · 마지막으로 수정됨: 2022/01/12 09:22 저자 teferi