문제
프로그래머스 2019 카카오 개발자 겨울 인턴십 튜플
https://programmers.co.kr/learn/courses/30/lessons/64065
언어
자바스크립트(JavaScript)
접근 방법
- input 문자열을 분리하여 배열의 배열의 형태로 변환한다.
- 크기 순으로 배열을 정렬한다.
- 첫 번째 배열의 요소를 answer에 저장한다.
- 다음 배열의 요소 중에 answer에 없는 요소를 찾고 answer에 저장한다.
코드
function solution(s) {
var answer = [];
// 문자열 분리
// 맨 앞 {{, 맨 뒤 }} 삭제하고 },{ 기준으로 잘라 배열에 넣는다
let strList = s.replace('{{','').replace('}}','').split('},{');
let setList = [];
for (let i=0; i<strList.length; i++){
setList.push(strList[i].split(','));
}
// 크기 순으로 배열을 정렬
setList.sort((a,b)=>{
if (a.length>b.length){
return 1;
}else{
return -1;
}
})
// 첫 번째 요소 answer에 저장
answer.push(parseInt(setList[0][0]));
// 각 배열의 요소중에 answer에 없는 요소를 찾고 answer에 저장
for (let i=1; i<setList.length; i++){
let ele = getEle(setList[i],answer);
answer.push(ele);
}
//console.log(answer,setList);
return answer;
}
function getEle(set, answer){
//set과 answer의 모든 요소를 배교해서 answer에 없는 set요소를 찾기
for (let i=0; i<set.length; i++){
for (let j=0; j<answer.length; j++){
set = set.filter(ele=>ele!=answer[j]);
}
}
return parseInt(set[0]);
}
복기
- 처음에 sort를 쓰지 않고 코드르 작성했는데, 정답은 나왔지만 코드가 복잡해졌다. sort를 써서 코드를 간결화했다.
- getEle 함수에서 filter를 쓰지 않고 코드를 작성했는데, 더 빠르긴 했지만 코드가 복잡해졌다. filter를 써서 코드르 간결화했다. 더 느려진다는 단점은 존재한다.
'개발 공부 > 알고리즘 문제 풀이' 카테고리의 다른 글
[프로그래머스] [1차] 프렌즈4블록 (0) | 2020.06.09 |
---|---|
[프로그래머스] [1차] 뉴스 클러스터링 (JavaScript) (0) | 2020.06.07 |
[프로그래머스] [3차] 압축 (JavaScript) (0) | 2020.06.07 |
[프로그래머스] 괄호 변환 (JavaScript) (0) | 2020.06.06 |
[프로그래머스] [3차] 방금그곡 (JavaScript) (0) | 2020.06.06 |