728x90
문제 설명
문제 풀이 방법
- 알파벳이 들어가는 사전 배열을 만들어준다.
- for문으로 msg를 순회하며 word에 msg[i]의 문자를 더해준다.
그리고 word가 사전에 있다면 사전에서의 index값을 저장한 뒤
다음 바퀴에서 또 word가 있는지 확인한다.
이때, 없다면 그 word는 사전에 등록하고, 저장한 index값을 answer배열에 push메서드로 넣어준다. - 마지막에는 for문이 다 돌때 마지막 index값을 answer배열에 넣어주지 못하기에
for문이 끝나고 마지막 index값을 넣어준다.
이 코드와 내가 처음 생각했던 방식의 순서가 반대이다.
나는 먼저 문자가 있는지 확인한 다음 배열에 넣는 방법이였지만 문제에서는 오류를 일으키는 방법이다.
이렇게 체크한 뒤 데이터를 가공하는 문제는 항상 확인할 대상을 빼두고 확인 후 다음 작업
또는 for문에서는 다음 바퀴에 else문을 이용해 동작하게 해야겠다.
내가 작성한 코드
function solution(msg) {
let dic = Array.from({ length: 26 }, (v, i) => String.fromCharCode(i + 65));
let answer = [];
let word = '';
let indexInDic = 0;
for(let i=0; i<msg.length; i++){
word += msg[i];
const isExist = dic.indexOf(word);
if(isExist !== -1){
indexInDic = isExist;
}
else{
dic.push(word);
answer.push(indexInDic+1);
word = '';
i--
}
}
answer.push(indexInDic+1);
return answer;
}
728x90
'코딩 테스트 > 프로그래머스 코딩 테스트 연습' 카테고리의 다른 글
[JS] 힌트 2Level / 완전탐색 / 피로도 (0) | 2023.06.09 |
---|---|
[JS] 힌트 2Level / Summer/Winter Coding(~2018) / 스킬트리 (0) | 2023.06.08 |
[JS] 2Level / 2018 KAKAO BLIND RECRUITMENT / [1차] 뉴스 클러스터링 (0) | 2023.06.06 |
[JS] 2Level / 연습 문제 / N개의 최소공배수 (0) | 2023.06.02 |
[JS] 2Level / 2017 팁스타운 / 예상 대진표 (0) | 2023.06.02 |