반응형
문제 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/64065
def solution(s):
"""
0.문자열에 있는 {{,}} 를 제거하고 집합끼리 나누기
1.주어진 s의 집합 길이에 따라 정렬하기
2.각각의 원소에서 없는 값을 answer에 넣어주기
3.마지막으로 모든 원소 str -> int로 바꿔주기
"""
answer = []
# 0 실행
s = s.replace("{{","")
s = s.replace("}}","")
s = s.split('},{')
# 1 실행
strings = sorted(s, key = lambda x : len(x))
# 2 실행
for string in strings:
for i in string.split(','):
if (i != str) and (i not in answer):
answer.append(i)
# 3 실행
answer = list(map(int,answer))
return answer
풀이
- 문자열에 있는 {{,}} 를 제거하고 집합끼리 나누기
- 주어진 s의 집합 길이에 따라 정렬하기
- 각각의 원소에서 없는 값을 answer에 넣어주기
- 마지막으로 모든 원소 str -> int로 바꿔주기
다른사람풀이
import re
from collections import Counter
def solution(s):
s = Counter(re.findall('\\d+', s))
return list(map(int, [k for k, v in sorted(s.items(), key=lambda x: x[1], reverse=True)]))
- re.findall('\\d+', s): 이 줄은 정규 표현식을 사용하여 **s**에서 숫자를 찾아내는 역할을 합니다. **\\d+**는 하나 이상의 숫자를 나타내는 정규 표현식
- Counter(re.findall('\\d+', s)): **collections.Counter**를 사용하여 이전에 찾은 숫자 리스트에서 각 숫자의 빈도를 세는 역할을 함. Counter 객체는 각 원소의 개수를 딕셔너리 형태로 저장함
- [k for k, v in sorted(s.items(), key=lambda x: x[1], reverse=True)]: 빈도에 따라 내림차순으로 정렬된 숫자의 리스트를 생성하는 역할. **s.items()**는 Counter 객체의 (키, 값) 쌍을 반환하며, sorted 함수를 사용하여 값에 따라 내림차순으로 정렬. 그리고 리스트 컴프리헨션을 사용하여 키만 추출하여 리스트로 반환
- list(map(int, ...)): 앞서 생성된 숫자 리스트의 각 요소를 정수로 변환하는 역할**map(int, ...)**은 숫자 리스트의 각 요소에 int 함수를 적용하여 정수로 변환. 마지막으로 list 함수를 사용하여 변환된 숫자 리스트를 리스트로 변환
반응형
'알고리즘' 카테고리의 다른 글
[구름톤 챌린지] Day 5 - 이진수 정렬 (0) | 2023.08.18 |
---|---|
[구름톤 챌린지] Day 4 - 완벽한 햄버거 만들기 (0) | 2023.08.17 |
[프로그래머스/Lv.1] 실패율_2019 KAKAO BLIND RECRUITMENT (0) | 2023.06.03 |
[BOJ/백트래킹] N과 M (3) (0) | 2023.05.23 |
[BOJ/백트래킹] N과 M (2) (0) | 2023.05.23 |