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)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

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

최근 댓글

최근 글

티스토리

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

윤수현의 개발 공간

백준/ Silver 5 문제 , 백준 Node.js 자바스크립트 9324 진짜 메시지 [ 문자열, 구현 ]
알고리즘 공부/백준 - 자바스크립트

백준/ Silver 5 문제 , 백준 Node.js 자바스크립트 9324 진짜 메시지 [ 문자열, 구현 ]

2022. 12. 5. 11:24

백준/ Silver 5 문제 , 백준 Node.js 자바스크립트 9324 진짜 메시지 [ 문자열, 구현 ]

 

 

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

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

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

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

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

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

-------------------------------------------------------------------------------------------

난이도 체감 🧑‍💻
1. 최상
2. 상
3. 중
4. 하


이해도 🙆‍♂️
1. 완벽히 이해
2. 다소 헷갈리는 부분들이 있음
3. 이해 못함

 

 

문제 출처 🏠

 

https://www.acmicpc.net/problem/9324

 

9324번: 진짜 메시지

스파이들은 사령부와 통신하기 위해서 SMTP(비밀 메시지 전송 프로토콜)를 사용해 비밀 회선으로 전자 메시지를 보낸다. 메시지가 적들에 의해 조작되어 보내진 것이 아닌 진짜 메시지라는 것

www.acmicpc.net

 

 

 

문제풀이 소감 🧑‍💻

 

3으로 나눠지면 다 FAKE 아닌가? 라는 생각으로 단순하게 접근했는데, 의외로 구현이 필요한 문제였음.

 

 

요구사항 📋

 

  • 세번째 글자마다 해당 글자를 한번 더 작성한다.
  • 입력은 변형된 문자가 주어진다.
  • 입력된 문자가 옳은 문자인지를 판단하여 결과를 출력하여라.

 

 

 

주의 ❗

글자 갯수 참고

 

변형 전 문자 갯수 - 변형 후 문자 갯수

 

1 - 1

2 - 2

3 - 4

4 - 5

5 - 6

6 - 8

7 - 9

8 - 10

9 - 12

10 - 13

 

어느정도 규칙은 존재하지만, 규칙을 이용해서 풀지는 않았다.

 

 

해결 전략 📝

 

dict에 하나씩 단어를 카운트 해준다.

 

이후, 3으로 나누어지는 카운트에 해당하는 문자가 나올때

 

그 바로 다음 문자가 현재 문자와 같은지를 비교해준다.

 

만약, 바로 다음 문자가 현재 문자와 다르다면 올바르게 변형되지 않은 경우이므로 false 체크를 해준뒤 while 문을 종료한다.

 

 

추가로, 3으로 나누어지는 카운트에 해당하는 문자 다음에 나오는 문자는 변형을 위해 추가해준 문자이므로 dict에 카운트해주지 않는다.

 

또한, 또 체크해줄 필요가 없으므로 cnt를 따로 +=1 해주어서 그다음 문자로 넘어가주게 한다.

 

 

 

 

 

정답 💯

 

 

const input = require("fs")
  .readFileSync("/dev/stdin")
  .toString()
  .trim()
  .split("\n");

const [input_N, ...input_messages] = input.map((v) => v.trim());

function solution(N, messages) {
  messages.forEach((message) => {
    const dict = {};
    let cnt = 0;
    let isRealMessage = true;
    while (message.length > cnt) {
      if (dict[message[cnt]] === undefined) {
        dict[message[cnt]] = 1;
        continue;
      }
      if (dict[message[cnt]] % 3 === 0) {
        if (message[cnt] !== message[cnt + 1]) {
          isRealMessage = false;
          break;
        }
        cnt += 1;
      }
      dict[message[cnt]] += 1;
      cnt += 1;
    }

    console.log(isRealMessage ? "OK" : "FAKE");
  });
}

solution(Number(input_N), input_messages);
반응형

'알고리즘 공부 > 백준 - 자바스크립트' 카테고리의 다른 글

백준/ Bronze 1 문제 , 백준 Node.js 자바스크립트 23882 알고리즘 수업 - 선택 정렬 2 [ 정렬 ]  (0) 2022.12.06
백준/ Bronze 1 문제 , 백준 Node.js 자바스크립트 23881 알고리즘 수업 - 선택 정렬 1 [ 정렬 ]  (0) 2022.12.05
백준/ Platinum 5 문제 , 백준 Node.js 자바스크립트 1725 히스토그램 [ 스택 ]  (0) 2022.12.05
백준/ Platinum 5 문제 , 백준 Node.js 자바스크립트 6549 히스토그램에서 가장 큰 직사각형 [스택]  (0) 2022.12.04
백준/ Silver 1 문제 , 백준 Node.js 자바스크립트 5014 스타트링크  (0) 2022.12.02
    '알고리즘 공부/백준 - 자바스크립트' 카테고리의 다른 글
    • 백준/ Bronze 1 문제 , 백준 Node.js 자바스크립트 23882 알고리즘 수업 - 선택 정렬 2 [ 정렬 ]
    • 백준/ Bronze 1 문제 , 백준 Node.js 자바스크립트 23881 알고리즘 수업 - 선택 정렬 1 [ 정렬 ]
    • 백준/ Platinum 5 문제 , 백준 Node.js 자바스크립트 1725 히스토그램 [ 스택 ]
    • 백준/ Platinum 5 문제 , 백준 Node.js 자바스크립트 6549 히스토그램에서 가장 큰 직사각형 [스택]
    GitHub ID : soohyun-dev
    GitHub ID : soohyun-dev
    환영합니다!😊 이곳은 저의 개발에 관한 내용들을 정리하는 공간입니다. 알고리즘 풀이에도 관심이 많아요. 좋은 하루 되세요~! github : soohyun_dev

    티스토리툴바