티스토리 뷰
문제: programmers.co.kr/learn/courses/30/lessons/64065
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
def solution(s):
answer = [[] for _ in range(501)]
check=[0 for _ in range(100001)]
maxLen=0
ans=[]
s=s[1:-1]
s=s.split('},')
for val in s:
if val[-1]!='}':
val=val[1:].split(',')
maxLen=max(maxLen,len(val))
answer[len(val)].append(list(map(int,val)))
else:
val=val[1:-1].split(',')
maxLen=max(maxLen,len(val))
answer[len(val)].append(list(map(int,val)))
for i in range(1,maxLen+1):
val=answer[i][0]
for x in (val):
if check[x]==0:
ans.append(x)
check[x]=1
return ans
|
cs |
이 문제를 처음에 풀었을 때 위와 같이 풀었다.
값을 추출할 때 어떤식으로 접근해야 할지 감이 안와서 처음과 끝을 잘라낸 다음에 split을 }, 로 하고 나면
마지막 값을 제외하고 나머지는 '{1,2,3,4' 식으로 된다.
그래서 if 와 else문으로 조건을 나누고 해당 크기에 따라 answer에 append한다.
예를 들어 val='{4,2,3' 이라 하자
그러면 val=val[1:].split(',')을 하면 val=['4','2','3']이 된다.
answer[3].append([4,2,3]) 이런식으로 흐름이 전개된다.
그러고 나서 리스트의 크기의 순서에 따라 알파벳을 확인한다.
확인하는 작업은 check에 0,1 에 따른 구분으로 값의 유무를 확인하고 나서 append한다.
1
2
3
4
5
6
7
|
import re
from collections import Counter
def solution5(s):
s = Counter(re.findall('\d+', s)).most_common()
return list(map(int, [k for k, v in s]))
|
cs |
위의 코드는 프로그래머스에서 상위권에 있는 코드를 변형하였다.
우선 re.findall('\d+',s)를 알아보자면 findall은 해당 조건에 대한 값을 다 찾는 것을 의미하고
'\d+'는 모든 숫자를 의미한다. (='[0-9]+') 그리고 Counter는 해당 리스트 값과 개수를 사전 형식으로 만들어준다. most_common()은 갯수가 많은 순으로 정렬하는 메소드이다. Counter와 most_common()은 많이 쓰이므로 알아두는 것이 좋다.
1
2
3
4
5
6
7
8
9
10
11
|
import collections
def solution4(s):
answer = []
s=s.lstrip('{').rstrip('}').split('},{')
for val in s:
val=val.split(',')
for v in val:
answer.append(int(v))
s=collections.Counter(answer).most_common()
return [k for k,v in s]
|
cs |
이 코드에서 주목할 것은 lstrip과 rstrip의 사용과 split에 대한 기준이다.
위와 같이 하면 왼쪽으로는 '{'은 다 사라지고 오른쪽으로는 '}'이 사라진다. 그리고 split을 },{ 을 하면 숫자들과 ','만 남게 되므로 ','로 split 한다음에 리스트에 값을 저장한다. 그 다음은 위에서 말했으므로 생략한다.
'알고리즘 > 프로그래머스' 카테고리의 다른 글
2020 카카오 인턴십 수식 최대화 (0) | 2021.02.08 |
---|---|
2017 카카오코드 본선 단체사진 찍기 (0) | 2021.02.05 |
2020 KAKAO BLIND RECRUITMENT괄호 변환 (0) | 2021.02.03 |
2017카카오코드 예선 카카오프렌즈 컬러링북 파이썬 (0) | 2021.02.03 |
2021 KAKAO BLIND RECRUITMENT 메뉴 리뉴얼 (0) | 2021.02.01 |
- Total
- Today
- Yesterday
- 그래프
- 파이썬
- 백준
- PostgreSQL
- Collections
- postgres
- thread
- headers
- ubuntu
- DRF
- env
- Spring
- Pattern
- docker-compose
- dockerignore
- 2021 KAKAO BLIND RECRUITMENT
- Python
- BFS
- Celery
- 면접
- 자바
- 알고리즘
- Command Line
- django
- Java
- 프로그래머스
- 카카오
- setattr
- Linux
- docker
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |