프로그래머스 - 튜플 / 문제 유형 : 구현, 문자열 / 2019 카카오 개발자 겨울 인턴십 / Level 2
2019 카카오 개발자 겨울 인턴십에서 나온 문제이다.
문제 바로가기 - https://school.programmers.co.kr/learn/courses/30/lessons/64065
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제
Solution
1. 문자열 파싱
: 주어진 문자열은 {{ , },{ }} 이런식으로 되어있다. strip()함수를 이용하여 양 끝에 있는 {{ 과 }}을 없애준 후, 각각의 데이터를 리스트로 저장해 주기 위해 '},{'을 단위로 문자열을 끊어준다.
이 과정을 거치면 입출력 예 1 은 다음과 같이 된다.
파싱 전 | 파싱 후 |
"{{2},{2,1},{2,1,3},{2,1,3,4}}" | ['2', '2,1', '2,1,3', '2,1,3,4'] |
그 다음 위의 문자열을 ',' 단위로 끊어준 후 list의 형태로 data라는 변수에 저장해 준다
2. 정렬
: 파싱된 문자열의 길이는 각각의 원소를 뜻한다. 무슨말이냐면, 길이가 1인 원소는 a1을 뜻하고 길이가 2인 원소는 a1,a2를 뜻한다.
즉, a1부터 문자열에 넣어주기 위해 정렬 과정을 거쳤다.
3. 튜플 만들기
: 길이대로 정렬되었기 때문에 길이가 2인 원소에서 a1을 제거하면 a2를 구할 수 있다. 이 과정을 반복하면 아래와 같다.
a1 | 2 | a1 = 2 |
a1,a2 | 2,1 | a2 = 1 |
a1, a2, a3 | 2,1,3 | a3 = 3 |
a1, a2, a3, a4 | 2,1,3,4 | a4 = 4 |
위와 같이 구현해주기 위해 subdata를 만들어 data안에 있는 원소들을 하나씩 가져온다.
subdata안에 answer의 원소가 존재하면 remove 해준 후 남은 원소를 answer에 append 해준다.
(subdata안에 있는 원소를 answer에 넣어주기 때문에 answer안에는 항상 subdata가 존재하게 된다.)
import sys
def solution(s):
answer = []
s2 = s.strip("{,}").split('},{')
data = []
for a in s2:
data.append(list(map(int,a.split(','))))
data.sort(key=len)
for i in range(len(data)):
subdata = list(data[i])
for a in answer:
subdata.remove(a)
answer.append(subdata[0])
return answer
'코딩테스트 문제' 카테고리의 다른 글
[Python] 프로그래머스 - 타겟넘버 (0) | 2023.04.13 |
---|---|
[코드트리] 삼성 SW 역량테스트 2022 상반기 오전 2번 문제 - 예술성 (0) | 2023.04.06 |
[Python] 프로그래머스 - 주차요금 계산 (0) | 2022.10.03 |
[Python] 프로그래머스 - 성격 유형 검사하기(2022 KAKAO TECH INTERNSHIP) (0) | 2022.09.17 |
[Python] 프로그래머스 - 신고 결과 받기(2022 KAKAO BLIND RECRUITMENT) (2) | 2022.09.16 |