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()]
ps/problems/programmers/64065.txt · 마지막으로 수정됨: 2022/01/12 09:22 저자 teferi
토론