방명록
- [프로그래머스 LV2] 튜플 - Python2024년 03월 28일 00시 18분 09초에 업로드 된 글입니다.작성자: Moonsu99
https://school.programmers.co.kr/learn/courses/30/lessons/64065
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
[2019년 카카오 개발자 겨울 인턴십 문제]
풀이 과정 생각?
입력이 { { }, { } } 형태니까 슬라이싱으로 시작끝 중괄호 제거 하고 ,를 기준으로 split
예제로 본다면
{{2},{2,1},{2,1,3},{2,1,3,4}} -> s[2:-2] 로 슬라이싱 수행 시 2},{2,1},{2,1,3},{2,1,3,4 -> .split("},{") 추가 하면 -> ['2', '2,1', '2,1,3', '2,1,3,4']
저 split한 결과의 각 집합을 List로 변환하고 각각 원소를 정수로 변환 처리
s = ['2', '2,1', '2,1,3', '2,1,3,4'] -> 리스트와 정수처리한 결과값은 [[2], [2, 1], [2, 1, 3], [2, 1, 3, 4]] 를 기대한다.
그 다음 원소 갯수가 작은 것이 먼저 올 수 있도록 sorting
sort(key=len)
그 후 정렬된 집합을 돌면서 결과값 생성을 하면 되는 어떻게 보면 간단한 문제 였다!
풀이코드
def solution(s): # 단계 1: '{', '}'를 제거하고, 각 집합을 구분하기 위해 ','를 기준으로 분리 s = s[2:-2].split("},{") # 각 집합을 리스트의 리스트로 변환하고, 각 원소를 정수로 변환 sets = [list(map(int, x.split(','))) for x in s] # 단계 2: 각 집합을 원소의 수에 따라 정렬 sets.sort(key=len) # 단계 3: 정렬된 집합을 돌면서 결과 배열 생성 answer = [] for subset in sets: for num in subset: if num not in answer: answer.append(num) break return answer
'코딩테스트 > 백준' 카테고리의 다른 글
백준(BAEKJOON) 10828 스택 - Kotlin (0) 2024.07.30 백준(BAEKJOON) 22942 데이터 체커 - Python (1) 2023.12.26 백준(BAEKJOON) 1918 후위표기식 - Python (1) 2023.12.26 백준(BAEKJOON) 2800 괄호제거 - Python (1) 2023.12.03 백준(BAEKJOON) 2504 괄호의 값 - Python (0) 2023.12.01 다음글이 없습니다.이전글이 없습니다.댓글