[백준/node.js] 2941번 크로아티아 알파벳
문제
예전에는 운영체제에서 크로아티아 알파벳을 입력할 수가 없었다. 따라서, 다음과 같이 크로아티아 알파벳을 변경해서 입력했다.
예를 들어, ljes=njak은 크로아티아 알파벳 6개(lj, e, š, nj, a, k)로 이루어져 있다. 단어가 주어졌을 때, 몇 개의 크로아티아 알파벳으로 이루어져 있는지 출력한다.
dž는 무조건 하나의 알파벳으로 쓰이고, d와 ž가 분리된 것으로 보지 않는다. lj와 nj도 마찬가지이다. 위 목록에 없는 알파벳은 한 글자씩 센다.
입력
첫째 줄에 최대 100글자의 단어가 주어진다. 알파벳 소문자와 '-', '='로만 이루어져 있다.
단어는 크로아티아 알파벳으로 이루어져 있다. 문제 설명의 표에 나와있는 알파벳은 변경된 형태로 입력된다.
출력
입력으로 주어진 단어가 몇 개의 크로아티아 알파벳으로 이루어져 있는지 출력한다.
예제 입/출력
ljes=njak / 6
ddz=z= / 3
nljj / 3
c=c= / 2
dz=ak / 3
풀이
const fs = require('fs');
let input = fs.readFileSync('/dev/stdin').toString().split('\n');
input = input[0];
solution(input)
function solution(str) {
let croatia = ["c=", "c-", "dz=", "d-", "lj", "nj", "s=", "z="];
for (let alphabet of croatia) {
str = str.split(alphabet).join("Q"); //이 부분이 가장 핵심.
}
/* for문 안에서 str이 어떻게 변하는지의 과정.
ljes=njak
ljes=njak
ljes=njak
ljes=njak
Qes=njak
Qes=Qak
QeQQak
QeQQak
*/
console.log(str.length)
}
느낀점
혼자 풀 때, 굉장히 하드코딩을 했다.
이 문제에서 croatia 문자를 가지는 배열을 만들고, croatia 배열의 element들을 기준으로
split() 메소드를 쓸 수 있다는 것을 몰랐기 때문이다.
str이 'ljes=njak' 이면 split().join(Q)를 하고 난 후에는 'QeQQak'로 바뀐다.
이 부분이 가장 핵심인 방법이다.
str = str.split(alphabet).join("Q"); 이부분에서 split() 까지만 하면 TypeError: input.split is not a function 이라는 에러가 뜬다. join() 까지 같이 써주어야 한다.
- 어떤한 배열의 요소를 이용하여 split() 메소드를 쓸 수 있다는 점.
- 하지만 split()까지만 쓰면 에러가 난다는 점.
- 그러므로 split() 메소드를 쓴다고 해서 배열이 만들어지는게 아니라는 점.
- split()과 join() 메소드를 함께 써야하고
- 배열의 요소가 발견 됫을 시 바꾸어줄 문자를 join(여기)에 넣어주어야 한다는 점.
새로운, 유용한 스킬? 을 배워간 문제인거 같다.
알고리즘을 풀면 항상 느끼는 거지만 정말 고수들이 많다.. ㅎ;;
그리고 내가 모르는 것도 너무 많다 ㅎ..;;
Author And Source
이 문제에 관하여([백준/node.js] 2941번 크로아티아 알파벳), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@daekuenhan/백준node.js-2941번-크로아티아-알파벳저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)