티스토리 뷰
반응형
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
내 풀이
def solution(s):
lst = s[1:-1].split('},')
lst.sort(key=len)
# ['{2}', '{2,1', '{1,2,3', '{1,2,4,3']
answer = []
for el in lst:
temp = ''
# el = '{1,2,3'
for char in el:
# 1. 지금 조사하는 글자가 숫자라면
if char.isdecimal():
temp += char
# 2. 지금 조사하는 글자가 }나 ,이면
elif char in '},':
if int(temp) not in answer:
answer.append(int(temp))
temp = ''
# 3. 조사가 끝났는데 temp에 값이 남아있다면
if temp and int(temp) not in answer:
answer.append(int(temp))
temp = ''
return answer
- split으로 문자열을 분리하여 리스트의 요소로 저장
- 리스트의 요소를 순회하며, 요소의 각 문자를 순회하며 조사
- 문자가 정수라면 temp에 더함
- 문자가 `}`나 `,`이며 현재 temp가 answer 리스트에 없으면 temp를 정수형으로 answer에 추가하고, temp를 초기화한다.
- 모든 문자에 대한 조사가 끝났는데 temp에 값이 있다면, 그 temp값이 answer 리스트에 없으면 temp를 정수형으로 answer에 추가하고, temp를 초기화한다.
참고 풀이
import re
from collections import Counter
def solution(s):
# 1. 문자열 s에서 `\d+`(정규표현식)과 일치하는 문자열을 모두 찾아서 리스트로 반환
s = re.findall('\d+', s)
# 2. s의 요소들을 빈도수와 함께 딕셔너리로 반환
cnt = Counter(s)
print(cnt)
# 3. 빈도수가 큰 순서대로 숫자를 정렬
most_common = cnt.most_common()
# 4. 숫자만 골라서 answer에 추가
answer = []
for tup in most_common:
answer.append(int(tup[0]))
return answer
프로그래머스에서 다른 사람의 풀이를 참고하여 다시 정리해본 풀이다.
정규표현식 라이브러리 re
re는 정규표현식을 활용하여 문자열에 대한 처리를 할 수 있는 라이브러리다.
- findall(정규표현식, 문자열) 함수 : 문자열에서 정규표현식에 해당하는 문자만 찾아내어, 리스트로 반환한다.
- '\d+' 정규표현식 : '\d'는 0-9 정수를 찾는 정규표현식이다. +는 연속되는 값을 모두 찾아 하나의 값으로 찾아낸다.
🪄예를 들어서, 문자열이 '111'이라고 하자.
1. re.findall('\d', '111')의 결과는 ['1', '1', '1']이 된다.
2. re.findall('\d+', '111')의 결과는 ['111']이 된다.
Counter 클래스
Counter는 collections 라이브러리에 내장된 클래스로, iterable한 객체의 각 요소의 갯수와 요소를 함께 반환해준다.
🪄예를 들어, lst = ['미식스', '모티', '노을', '노을', '미식스', '미식스']라고 하자.
Counter(lst)는 Counter({ '미식스' : 3, '모티' : 1, '노을' : 2 }) 이다.
- Counter 클래스의 most_common() 메서드 : Counter 객체를 빈도수를 기준으로 내림차순 정렬하여, (요소, 빈도수) 형태의 튜플로 반환한다. 인자로는 반환할 요소의 개수 n을 지정할 수 있다. n을 지정하면, top n개의 요소만을 반환한다.
반응형
'알고리즘 풀이 > 프로그래머스' 카테고리의 다른 글
[프로그래머스/Lv.2] [1차]캐시_2018 KAKAO BLIND RECRUITMENT (0) | 2023.11.08 |
---|---|
[프로그래머스/Lv.2] 뉴스 클러스터링_2018 KAKAO BLIND RECRUITMENT (0) | 2023.06.04 |
[프로그래머스/Lv.1] 실패율_2019 KAKAO BLIND RECRUITMENT (0) | 2023.06.01 |
[프로그래머스/Lv.1] 크레인 인형뽑기 게임_2019 카카오 겨울 인턴십 (0) | 2023.05.15 |
[프로그래머스/Lv.1] 키패드 누르기_2020 카카오 인턴십 (0) | 2023.05.13 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- re라이브러리
- 싸피
- sql 데이터타입 변경
- 리눅스
- Linux
- SQL
- json필드
- 바이너리 조건
- sql대소문자
- ubuntu
- 백준
- 하둡
- 오블완
- 완전탐색
- 스택
- mysql binary
- django
- hdfs
- 빅데이터
- docker
- 프로그래머스
- 우분투
- stream=true
- 백트래킹
- 백준 3020
- SSAFY
- 정규표현식
- 파이썬
- 티스토리챌린지
- MySQL
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
글 보관함
반응형