| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 |
- flex box
- Javascript
- 백준1789
- 노마드스터디
- 모던자바스크립트DeepDive
- 자바스크립트 함수
- 21313 nodejs
- 1026 node.js
- const
- 개발자
- 11047 node.js
- 14655 nodejs
- 자바스크립트 일급객체
- 백준25176
- 1789 node.js
- 2217 node.js
- CSS flex
- 백준1026
- 노마드북클럽
- IT5분잡학사전
- 11399 node.js
- 노개북
- 모던자바스크립트
- 코딩
- 개인프로젝트
- 1931 node.js
- 1541 node.js
- 백준21313
- 자바스크립트 딥다이브
- 모던자바스크립트 딥다이브
- Today
- Total
캐또's coding
2941 - 크로아티아 알파벳 - node.js 본문
https://www.acmicpc.net/problem/2941
2941번: 크로아티아 알파벳
예전에는 운영체제에서 크로아티아 알파벳을 입력할 수가 없었다. 따라서, 다음과 같이 크로아티아 알파벳을 변경해서 입력했다. 크로아티아 알파벳 변경 č c= ć c- dž dz= đ d- lj lj nj nj š s= ž z=
www.acmicpc.net
문제를 보는 순간 생각한 해결 방법은, 우선 지금까지 했던 것과 마찬가지로 우선 모든 문자를 ''로 구분하여 분리한 다음. 크로아티아 알파벳으로 정한 알파벳들이 오는 경우를 찾아야 한다고 생각했다. 그러기 위해서 입력 문자를 검사 대상 문자, 대상 문자의 앞 문자, 뒷 문자로 구분한 뒤, 지금 검사 대상 문자가 반복문으로 돌기 시작할 때 그 앞 문자와 뒷 문자를 찾아서 만약 그것이 크로아티아 알파벳에 해당한다면 한 개로만 카운트한다. 이런 방식으로 생각했다.
그런데 이렇게 코드를 작성하게 된다면 여기서는 비록 크로아티아 알파벳이 8개밖에 없어서 조금 귀찮더라도 하나씩 작성할 수 있지만, 확장성도 그리 좋지는 않고 어찌되었든 코드 자체가 길어지는 단점이 생길 수밖에 없다고 여겨져 어떤 답안들이 있는지 찾아봤다.
문제의 해결은 생각보다 간단했다. 요는 크로아티아 알파벳으로 적힌 것들이 한 개로만 카운트 되어야 한다는 것, 그러니 입력으로 들어온 값들 중 크로아티아 알파벳인 것들을 한 글자짜리 알파벳으로 바꾸기만 하면 된다.
let input = require("fs").readFileSync("/dev/stdin").toString().trim();
const replaceStr = ["c=", "c-", "dz=", "d-", "lj", "nj", "s=", "z="];
for (let replStr of replaceStr) {
input = input.split(replStr).join("q");
}
console.log(input.length);
첫 줄에 입력을 받아온다. 바꿔야 하는 크로아티아 문자를 배열에 저장하고 for ...of를 사용해서 input의 문자들을 q로 바꿔줬다. 마지막으로 출력을 통해 input의 길이를 출력해주면 문제 해결.
작성 후 제출하면서도 이게 될까 싶었는데 정답으로 나와서 신기했던 문제다.
'기초 공부 > 백준 문제 풀이' 카테고리의 다른 글
| 1316 - 손익분기점 - node.js (0) | 2022.08.23 |
|---|---|
| 1316 - 그룹 단어 체커 - node.js (0) | 2022.08.23 |
| 5622 - 다이얼 - node.js (0) | 2022.08.22 |
| 2908 - 상수 - node.js (0) | 2022.08.22 |
| 1152 - 단어의 개수 - node.js (0) | 2022.08.22 |