본문 바로가기

Algorithm/String

(Javascript) - 프로그래머스(2019 카카오 개발자 겨울 인턴십) : 튜플

반응형

programmers.co.kr/learn/courses/30/lessons/64065

 

코딩테스트 연습 - 튜플

"{{2},{2,1},{2,1,3},{2,1,3,4}}" [2, 1, 3, 4] "{{1,2,3},{2,1},{1,2,4,3},{2}}" [2, 1, 3, 4] "{{4,2,3},{3},{2,3,4,1},{2,3}}" [3, 2, 4, 1]

programmers.co.kr

문자열 처리 구현 문제였습니다.

 

풀이방법

 1. 문자열을 정제한 뒤 만든 배열을 길이 오름차순으로 정렬합니다.

 

 2. Map에 저장되어 있지 않은 값이 있다면 answer에 넣어줍니다.

 

 3. answer를 반환합니다.

Code

function solution(s) {
  let answer = [];
  let M = new Map();
  s = s.substr(1, s.length - 2);
  let refined = [];
  refined = s
    .split("},{")
    .map((v) => v.replace(/\{|\}/g, ""))
    .map((v) => v.split(",").map((v) => +v))
    .sort((a, b) => a.length - b.length);

  for (let i = 0; i < refined.length; i++) {
    for (let j = 0; j < refined[i].length; j++) {
      if (M.has(refined[i][j]) === false) {
        M.set(refined[i][j], 1);
        answer.push(parseInt(refined[i][j]));
        break;
      }
    }
  }
  return answer;
}