프로그래머스 : 튜플
https://programmers.co.kr/learn/courses/30/lessons/64065
문제풀이
이번 문제는 2019 카카오 개발자 겨울 인턴십 코딩테스트에서 출제 되었던 문제입니다.
처음에 문제 내용이 이해가 잘 되지 않아서 시간을 썼던 문제입니다. 결론은 제일 작은 크기의 집합 다음 순서로 어떤 수가 추가되는지 검증하기만 하면 됩니다.
저는 각 집합들을 길이 순으로 정렬하고 중복값을 없애주었습니다!
코드
function solution(s) {
let answer = [];
s = s.slice(2, s.length-2).split('},{');
// 문자열 s의 맨앞 문자 {{ 와 맨뒤의 }} 를 제외하고 },{ 기준으로 나누어 배열에 담음
// 그럼 s는 ['2', '2,3,4'] 이런식의 튜플(문자열) 배열로 바뀜
const tmp = s.sort((a, b)=> a.length - b.length).map(elem => elem = elem.split(','));
// 배열의 길이에 맞추어 정렬한 후 각 요소를 , 문자 기준으로 한번더 split 함
// tmp는 [['2'], ['2','3','4']] 이런 배열로 바뀜
for(let i=0; i<tmp.length; i++)
for(let j=0; j<tmp[i].length; j++)
answer.push(parseInt(tmp[i][j], 10));
// 빈배열 answer에 각 요소들을 int 형식으로 바꾼 후 삽입
// answer는 [2, 2, 3, 4] 이런 숫자 배열로 바뀜
return Array.from(new Set(answer));
// Set을 사용하여 중복된 값을 없애주고 배열로 전환
}
리뷰
처음 s가 문자열인지 모르고 계속 sort와 map 삽질을 했습니다 ㅠ 어쩐지 계속 오류가 뜨더라..
'알고리즘 문제풀이 > 프로그래머스' 카테고리의 다른 글
괄호 변환 / js 풀이 (0) | 2021.08.28 |
---|---|
프린터 / js 풀이 (0) | 2021.08.06 |
네트워크 / js 풀이 (0) | 2021.07.26 |
오픈채팅방 / js 풀이 (0) | 2021.07.26 |
타겟 넘버 / js 풀이 (0) | 2021.07.08 |