문제
https://school.programmers.co.kr/learn/courses/30/lessons/64065?language=python3
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
풀이
그냥 생각나는대로 막 구현했다. 그래서 코드가 개판이긴한데..
{} 를 기준으로 일일히 파싱했다. 이후에 문자열의 길이순으로 정렬했다.
그 후에 "n1, n2, n3" 형태로 되어있는 문자열을 "," 기준으로 split한 후에, 각 요소에 접근하여 set으로 중복을 체크하고 정답 배열에 넣어줬다.
코드
def solution(s):
strs = []
i = 1
while True:
if s[i] == '}' : break
if s[i] == ',' :
i+=1
continue
j = 0
temp = ""
while True:
if s[i + j] == '}':
j+=1
break
if s[i + j] == '{' :
j+=1
continue
temp += s[i+j]
j+=1
strs.append(temp)
i += j
strs.sort(key=len)
answerSet = set()
answer = []
for s in strs:
vals = s.split(',')
for v in vals:
if int(v) not in answerSet:
answerSet.add(int(v))
answer.append(int(v))
return answer
후기
사실 정규식 쓰면 엄청 짧고 간결하게 풀 수 있을거라 생각했고, 실제로 그 풀이가 탑이긴 했다.
근데 그냥 손 가는대로 풀이했다..
'프로그래머스' 카테고리의 다른 글
LV2 [KAKAO] [1차] 캐시 (0) | 2023.08.16 |
---|---|
LV2 [KAKAO] [3차] 압축 (0) | 2023.08.15 |
LV2 [KAKAO] [1차] 프렌즈4블록 (0) | 2023.08.14 |
LV2 [KAKAO] [3차] 파일명 정렬 (0) | 2023.06.20 |
LV2 [KAKAO] k진수에서 소수 개수 구하기 (0) | 2023.06.20 |