갬쿠
개미 개발
갬쿠
전체 방문자
오늘
어제
  • ALL (137)
    • React (20)
    • JS & CSS & HTML (29)
    • Algorithm (62)
    • 웹 보안 (11)
    • 달리는 까까: 쿠키런 팬게임 (10)
    • Python (0)
    • 기타 (5)
    • 비공개 플젝 (0)

블로그 메뉴

  • GitHub
  • 방명록
  • 관리자 메뉴

공지사항

인기 글

태그

  • 크롬 공룡게임
  • REACT
  • 달리는 까까
  • js
  • 쿠키런
  • useEffect
  • useReducer
  • 쿠키런 팬게임
  • 백준
  • Programmers
  • 게임 개발
  • Baekjoon
  • SQL Injection
  • node.js
  • JavaScript
  • BEAKJOON
  • 쿠키런 모작
  • Object
  • EventListener
  • 모의 해킹
  • CSS
  • 크롬 공룡 게임
  • useState
  • 객체
  • transform
  • HTML
  • Python
  • 게임
  • 리액트
  • Best of the Best

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
갬쿠

개미 개발

[2941] 크로아티아 알파벳 - JavaScript
Algorithm

[2941] 크로아티아 알파벳 - JavaScript

2022. 6. 15. 23:30
/* 문제 */
예전에는 운영체제에서 크로아티아 알파벳을 입력할 수가 없었다. 따라서, 다음과 같이 크로아티아 알파벳을 변경해서 입력했다.

예를 들어, ljes=njak은 크로아티아 알파벳 6개(lj, e, š, nj, a, k)로 이루어져 있다. 단어가 주어졌을 때, 몇 개의 크로아티아 알파벳으로 이루어져 있는지 출력한다.
dž는 무조건 하나의 알파벳으로 쓰이고, d와 ž가 분리된 것으로 보지 않는다. lj와 nj도 마찬가지이다. 위 목록에 없는 알파벳은 한 글자씩 센다.

 

단어가 몇 개의 알파벳으로 이루어져 있는지만 출력하면 되기 때문에 전체 단어의 길이에서 한 글자로 취급되는 크로아티아 알파벳의 수를 빼주기만 하면 된다고 생각했다. 그렇게 작성한 첫 번째 코드는

// 틀린 코드

const fs = require("fs");
let input = fs.readFileSync("./dev/stdin").toString().trim();
const cr = ["c=", "c-", "dz=", "d-", "lj", "nj", "s=", "z="];
let mVal = 0;
for (let i = 0; i < 8; i++) {
  let j = 0;
  while (input.indexOf(cr[i], j) != -1) {
    mVal++;
    j += input.indexOf(cr[i], j) + 2;
  }
}
console.log(input.length - mVal);

위와 같다.

크로아티아 알파벳을 모두 배열 cr에 저장한 후 입력 받은 단어에 크로아티아 알파벳이 있을 때마다 mVal(전체 단어 길이에서 뺄 값)을 1씩 증가시킨다. 같은 크로아티아 알파벳이 여러 개 있더라도 모두 찾아낼 수 있도록 while문으로 해당 알파벳이 더이상 나오지 않을 때까지 반복해서 검사한다. dz=의 경우에는 mVal을 2씩 증가시켜야 하는데, dz=를 검사할 때 한 번, z=를 검사할 때도 한 번 더 mVal을 증가시키기 때문에 제대로 처리가 된다.

답은 제대로 나오는데 백준에 제출하면 틀렸다고 나온다.

 

// 최종 코드(정답 코드)

const fs = require("fs");
let input = fs.readFileSync("./dev/stdin").toString().trim();
const cr = ["c=", "c-", "dz=", "d-", "lj", "nj", "s=", "z="];
for (let c of cr) {
  input = input.split(c).join("a");
}
console.log(input.length);

숫자를 카운트하는 과정에서 틀린 로직이 있는 것 같은데, 크로아티아 문자를 모두 한 글자인 알파벳(임의로 a로 설정)으로 바꾸면 중복 카운팅 없이 잘 처리된다.

728x90

'Algorithm' 카테고리의 다른 글

[1912] 연속합 - Python  (0) 2022.10.30
[2447] 별 찍기 - JavaScript  (1) 2022.06.19
[2775] 부녀회장이 될테야 - JavaScript  (0) 2022.06.15
[15552] 빠른 A+B - JavaScript (Node.js 시간 초과 해결)  (0) 2022.06.12
[14681] 사분면 고르기 - JavaScript (Node.js EACCESS 에러 수정)  (0) 2022.06.11
    'Algorithm' 카테고리의 다른 글
    • [1912] 연속합 - Python
    • [2447] 별 찍기 - JavaScript
    • [2775] 부녀회장이 될테야 - JavaScript
    • [15552] 빠른 A+B - JavaScript (Node.js 시간 초과 해결)
    갬쿠
    갬쿠
    보안&소프트웨어 전공 프론트엔드 개발자

    티스토리툴바