GitHub ID : soohyun-dev
윤수현의 개발 공간
GitHub ID : soohyun-dev
전체 방문자
오늘
어제
  • 분류 전체보기 (918)
    • 성장기록 (49)
      • 성장기록 (3)
      • 우아한테크코스 (16)
      • 프로젝트 (15)
      • TIL (14)
      • 테오의 스프린트 (1)
    • 프로그래밍언어 (88)
      • C언어 (14)
      • HTML\CSS (12)
      • JavaScript (7)
      • React (23)
      • Python (11)
      • JAVA (14)
      • TypeScript (6)
    • 알고리즘 공부 (736)
      • 코드업 - 파이썬 (108)
      • 백준 - 파이썬 (468)
      • 백준 - 자바스크립트 (125)
      • 프로그래머스 - 파이썬 (1)
      • 프로그래머스 - 자바스크립트 (34)
    • 책 리뷰 (9)
      • 프로그래밍 (3)
      • 독서 (6)
    • 전자기기 (1)
    • 일상, 일기 (18)
    • 기술 세미나 (2)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 백준
  • 코딩
  • 백준파이썬
  • javascript
  • 코드업파이썬
  • 영어
  • 코드업
  • 독해
  • 프로그래머스풀이
  • 자바스크립트
  • 프로그래머스
  • 코테
  • 프론트엔드
  • 코딩테스트
  • 프로그래밍언어
  • 백준풀이
  • 파이썬
  • 영어독해
  • PYTHON
  • 프로그래머스자바스크립트

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
GitHub ID : soohyun-dev

윤수현의 개발 공간

프로그래머스 / Level 2 , 2018 KAKAO BLIND RECRUITMENT , [3차] 압축 자바스크립트 , JS
알고리즘 공부/프로그래머스 - 자바스크립트

프로그래머스 / Level 2 , 2018 KAKAO BLIND RECRUITMENT , [3차] 압축 자바스크립트 , JS

2022. 9. 30. 11:16

프로그래머스 / Level 2 , 2018 KAKAO BLIND RECRUITMENT , [3차] 압축 자바스크립트 , JS

 

 

Check Point !   ( 해당사항 ✓체크 )

1. 막힘 없이 수월하게 풀린 문제인가?

2. 1시간이내로 풀렸던 문제인가?

3. 1시간 이상 or 며칠을 두고 풀어봤더니 풀린 문제인가?

4. 시간을 써도 도무지 풀 수 없는 문제인가?

5. 솔루션을 찾아봤는가?

-------------------------------------------------------------------------------------------
난이도 체감
1. 최상
2. 상
3. 중
4. 하


<이해도>
1. 완벽히 이해
2. 다소 헷갈리는 부분들이 있음
3. 이해 못함


<덧붙일 말>
어제 자기전 새벽에 푼 문제인데 생각한 로직인 딱 맞아서 풀려서 기분 좋았던 문제였다.

 

 

 

문제 출처

https://school.programmers.co.kr/learn/courses/30/lessons/17684

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

 

 

 

 

풀이

 

우선 TypeNum 이라는 사전을 만들건데, A-Z까지 각각 1-26 번까지의 번호를 할당하여 넣어줄 것이다.

 

하드코딩할 필요없이 아스키코드를 이용하여 넣어주자.

 

 

*참고로 A=65번 ~ Z는 90번이다.

 

value값은 1번부터 차례로 부여해야하므로 각값에서 64를 빼주고 넣어준다.

 

 

 

이후 주어진, msg 단어를 하나씩 확인해가면서 사전에 단어가 있는지 없는지를 확인해준다.

 

한자리 단어는 사전에 이미 다들어가 있고 새로만나게될 두자리 이상의 단어들은 다 사전에 넣어준다.

 

이때, 앞에서 나왔던 두자리 이상 단어가 사전에 이미 들어가 있고 또 만나게 될경우 부여한 value값을 결과 값에 넣어주고 더이상 단어를 더 생성하지 않게 하는 것이 이 문제의 핵심이다.

 

 

이 구분은 if(Type[Num]) 으로 확인해주면서 사전에 단어가 있는지 없는지를 확인해주자.

 

 

 

조금 제대로 체크해줘야하는 부분은 단어를 이어 붙여서 만들었을때 그 단어가 사전에 없다면 사전에 넣어주고

 

다음에 확인해야될것은 방금 이어 붙인 단어 부터 시작해야된다는 점이다.

 

 

ex) AB 까지는 사전에 있고 ABC가 사전에 없다면

 

ABC를 사전에 넣어주고 이제 체크해줘야할단어는 C라는 단어이다.

 

C라는 단어부터 다시 CD, CDE... 이렇게 다시 오른쪽으로 붙여가면서 확인해주고

 

이전의 AB 단어들은 더이상 확인해줄 것이 없다. 

 

 

 

 

그리고 이 변수들을 잘 활용하자.

 

cnt는 msg 단어의 인덱스를 차례대로 확인해주고 msg단어의 길이만큼 커지게되면 while문을 종료시키게 한다.

 

plus는 Z까지 26을 부여했고 새로 생성되는 단어부터는 27을 시작으로 넣어주면 된다.

 

따라서 사전에 단어를 넣게된다면 넣고나서 반드시 plus를 증가시켜주자.

 

 

result는 결과값들을 저장하고 최종적으로 return 할 값이다.

 

 

 

 

정답

function solution(msg) {
  const TypeNum = {};
  for (let i = 65; i <= 90; i++) TypeNum[String.fromCharCode(i)] = i - 64;
  let [cnt, plus, result] = [0, 27, []];
  while (cnt < msg.length) {
    let tmp = msg[cnt];
    let newWord = tmp;
    while (TypeNum[tmp]) {
      newWord = tmp + msg[cnt + 1];
      // 사전에 단어가 있을 때
      if (TypeNum[newWord]) [tmp, cnt] = [newWord, cnt + 1];
      // 사전에 단어가 없을 때
      else {
        TypeNum[newWord] = plus;
        plus += 1;
        cnt += 1;
        result.push(TypeNum[tmp]);
        break;
      }
    }
  }
  return result;
}
반응형

'알고리즘 공부 > 프로그래머스 - 자바스크립트' 카테고리의 다른 글

프로그래머스 / Level 1 , 연습문제 , 명예의 전당 (1) 자바스크립트 , JS  (0) 2022.12.07
프로그래머스 / Level 2 , 깊이/너비 우선 탐색(DFS/BFS) , 타겟 넘버 자바스크립트 , JS  (1) 2022.09.29
프로그래머스 / Level 2 , 2019 KAKAO BLIND RECRUITMENT , 오픈채팅방 자바스크립트 , JS  (0) 2022.09.28
프로그래머스 / Level 2 , 스택/큐 , 프린터 자바스크립트 , JS  (0) 2022.09.26
프로그래머스 / Level 2 , 2019 카카오 개발자 겨울 인턴십 , 튜플 자바스크립트 , JS  (0) 2022.09.26
    '알고리즘 공부/프로그래머스 - 자바스크립트' 카테고리의 다른 글
    • 프로그래머스 / Level 1 , 연습문제 , 명예의 전당 (1) 자바스크립트 , JS
    • 프로그래머스 / Level 2 , 깊이/너비 우선 탐색(DFS/BFS) , 타겟 넘버 자바스크립트 , JS
    • 프로그래머스 / Level 2 , 2019 KAKAO BLIND RECRUITMENT , 오픈채팅방 자바스크립트 , JS
    • 프로그래머스 / Level 2 , 스택/큐 , 프린터 자바스크립트 , JS
    GitHub ID : soohyun-dev
    GitHub ID : soohyun-dev
    환영합니다!😊 이곳은 저의 개발에 관한 내용들을 정리하는 공간입니다. 알고리즘 풀이에도 관심이 많아요. 좋은 하루 되세요~! github : soohyun_dev

    티스토리툴바