본문 바로가기
프로그래머스/Python

[프로그래머스] 튜플 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트

by 우당탕탕 개발자 2023. 7. 22.
728x90
반응형

 

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

1. 문제 설명

2. 풀이과정

  1. 입력받은 문자열을 }를 기준으로 분리하여 각각 리스트로 저장한다. s = list(s.split('}'))
  2. 문자열 마지막에는 무조건 }}가 들어가므로 변형한 리스트 마지막에는 아무것도 없는 원소가 두 개 들어가게 된다. 따라서 제일 마지막 두 개의 원소를 제거해 준다. s.pop()  s.pop()
  3. 입력받은 문자열을 2차원 리스트로 변형하여 저장할 리스트를 생성한다. sList = list()
  4. 리스트로 바꾼 문자열 s의 각 원소를 하나씩 추출한다. for i in s
  5. 각 원소를 리스트로 바꿔 저장할 리스트를 생성한다. li = list()
  6. 문자열을 숫자로 바꿔 저장하기 위해 문자열을 저장할 변수를 생성하고 초기화한다. num = ''
  7. 추출한 원소의 각 문자를 다시 하나씩 추출하여 for j in i
  8. 만약 추출한 문자가 숫자이면 if (j.isnumeric())
  9. 추출한 문자를 추가한다. num += j
  10. 만약 추출한 문자가 콤마(,) 일 때 숫자로 바꿀 문자가 있으면 if (j == ',') and (len(num) > 0)
  11. 문자를 숫자로 바꾸어 리스트에 추가한다. li.append(int(num))
  12. 숫자로 바꿀 문자 변수를 다시 초기화한다. num = ''
  13. 추출한 원소의 모든 문자를 확인했으면 마지막에 숫자 문자열을 확인하고 있으면 추가한다. li.append(int(num))
  14. 원소를 리스트로 바꾼 결과를 다시 리스트에 추가한다. sList.append(li)
  15. 문자열을 리스트로 바꾼 결과를 원소의 개수를 기준으로 오름차순 정렬한다. sList.sort(key=len)
  16. 정렬한 리스트를 하나씩 추출하고 for i in sList
  17. 추출한 리스트에서 다시 원소를 각각 하나씩 추출한다. for j in i
  18. 만약 결과를 저장 리스트에 해당 원소가 없으면 해당 원소를 추가한다. 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
반응형