Notice
Recent Posts
Recent Comments
Link
나의 개발일지
[프로그래머스] Lv.2 튜플 [ Python, 파이썬] 본문
- 문제 : https://school.programmers.co.kr/learn/courses/30/lessons/64065
- 문자열 "{{4,2,3},{3},{2,3,4,1},{2,3}}" 에서 [[4, 2, 3], [3], [2, 3, 4, 1], [2, 3]] 처럼 리스트 형식으로 변환하는 과정
- [[3], [2, 3], [4, 2, 3], [2, 3, 4, 1]] 리스트 길이 순으로 정렬 후 차집합해서 나온 수를 정답에 추가하는 과정
- 더 좋은 방법은 정규식을 사용?
def solution(s):
answer = []
# s = "{{4,2,3},{3},{2,3,4,1},{2,3}}" 일 때
s = s.replace("{", "") # 4,2,3},3},2,3,4,1},2,3}}
s = s[:-2].split("},") # ['4,2,3', '3', '2,3,4,1', '2,3']
int_s = [list(map(int, i.split(","))) for i in s] # [[4, 2, 3], [3], [2, 3, 4, 1], [2, 3]]
int_s.sort(key = lambda x : len(x)) # [[3], [2, 3], [4, 2, 3], [2, 3, 4, 1]]
answer.append(int_s[0][0]) # 제일 처음 요소 미리 하나 추가
for i in range(1, len(int_s)):
n = set(int_s[i]) - set(int_s[i-1]) # i 번째, i-1 번째 요소를 set로 바꿔서 차집합
answer.append(n.pop()) # {2, 3} - {3} = {2} 가 나오는데 2를 빼서 정답 리스트에 추가
return answer
'프로그래머스' 카테고리의 다른 글
[프로그래머스] Lv.3 디스크 컨트롤러 [Python, 파이썬] (0) | 2023.09.01 |
---|---|
[프로그래머스] Lv.2 큰 수 만들기 [Python, 파이썬] (0) | 2023.08.31 |
[프로그래머스] Lv.2 행렬의 곱셈 [Python, 파이썬] (0) | 2023.08.29 |
[프로그래머스] Lv.2 N개의 최소공배수 [Python, 파이썬] (0) | 2023.08.29 |
[프로그래머스] PCCP 모의고사 1회_3 유전법칙 [Python] (0) | 2023.07.14 |
Comments