728x90
반응형
1. 문제 설명
2. 풀이과정
- 입력받은 문자열을 }를 기준으로 분리하여 각각 리스트로 저장한다. s = list(s.split('}'))
- 문자열 마지막에는 무조건 }}가 들어가므로 변형한 리스트 마지막에는 아무것도 없는 원소가 두 개 들어가게 된다. 따라서 제일 마지막 두 개의 원소를 제거해 준다. s.pop() s.pop()
- 입력받은 문자열을 2차원 리스트로 변형하여 저장할 리스트를 생성한다. sList = list()
- 리스트로 바꾼 문자열 s의 각 원소를 하나씩 추출한다. for i in s
- 각 원소를 리스트로 바꿔 저장할 리스트를 생성한다. li = list()
- 문자열을 숫자로 바꿔 저장하기 위해 문자열을 저장할 변수를 생성하고 초기화한다. num = ''
- 추출한 원소의 각 문자를 다시 하나씩 추출하여 for j in i
- 만약 추출한 문자가 숫자이면 if (j.isnumeric())
- 추출한 문자를 추가한다. num += j
- 만약 추출한 문자가 콤마(,) 일 때 숫자로 바꿀 문자가 있으면 if (j == ',') and (len(num) > 0)
- 문자를 숫자로 바꾸어 리스트에 추가한다. li.append(int(num))
- 숫자로 바꿀 문자 변수를 다시 초기화한다. num = ''
- 추출한 원소의 모든 문자를 확인했으면 마지막에 숫자 문자열을 확인하고 있으면 추가한다. li.append(int(num))
- 원소를 리스트로 바꾼 결과를 다시 리스트에 추가한다. sList.append(li)
- 문자열을 리스트로 바꾼 결과를 원소의 개수를 기준으로 오름차순 정렬한다. sList.sort(key=len)
- 정렬한 리스트를 하나씩 추출하고 for i in sList
- 추출한 리스트에서 다시 원소를 각각 하나씩 추출한다. for j in i
- 만약 결과를 저장 리스트에 해당 원소가 없으면 해당 원소를 추가한다. if (j not in answer): answer.append(j)
반응형
3. 소스코드
def solution(s):
answer = []
s = list(s.split('}'))
s.pop()
s.pop()
sList = list()
for i in s:
li = list()
num = ''
for j in i:
if (j.isnumeric()):
num += j
if (j == ',') and (len(num) > 0):
li.append(int(num))
num = ''
li.append(int(num))
sList.append(li)
sList.sort(key=len)
for i in sList:
for j in i:
if (j not in answer):
answer.append(j)
return answer
728x90
반응형
'프로그래머스 > Python' 카테고리의 다른 글
[프로그래머스] 할인 행사 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.07.24 |
---|---|
[프로그래머스] 모의고사 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.07.24 |
[프로그래머스] 기능개발 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.07.23 |
[프로그래머스] 카드 뭉치 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.07.23 |
[프로그래머스] 과일 장수 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.07.22 |
[프로그래머스] 의상 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.07.22 |
[프로그래머스] [1차] 캐시 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.07.19 |
[프로그래머스] 행렬의 곱셈 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.07.19 |