개발새발 로그

[JS] 백준 2941번 : 크로아티아 알파벳 본문

알고리즘

[JS] 백준 2941번 : 크로아티아 알파벳

이즈흐 2023. 6. 26. 15:57

크로아티아 알파벳 

한국어   
시간 제한메모리 제한제출정답맞힌 사람정답 비율
1 초 128 MB 146039 65040 54821 44.642%

문제

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

크로아티아 알파벳변경
č c=
ć c-
dz=
đ d-
lj lj
nj nj
š s=
ž z=

예를 들어, ljes=njak은 크로아티아 알파벳 6개(lj, e, š, nj, a, k)로 이루어져 있다. 단어가 주어졌을 때, 몇 개의 크로아티아 알파벳으로 이루어져 있는지 출력한다.

dž는 무조건 하나의 알파벳으로 쓰이고, d와 ž가 분리된 것으로 보지 않는다. lj와 nj도 마찬가지이다. 위 목록에 없는 알파벳은 한 글자씩 센다.

입력

첫째 줄에 최대 100글자의 단어가 주어진다. 알파벳 소문자와 '-', '='로만 이루어져 있다.

단어는 크로아티아 알파벳으로 이루어져 있다. 문제 설명의 표에 나와있는 알파벳은 변경된 형태로 입력된다.

출력

입력으로 주어진 단어가 몇 개의 크로아티아 알파벳으로 이루어져 있는지 출력한다.

예제 입력 1 

ljes=njak

예제 출력 1 

6

예제 입력 2 

ddz=z=

예제 출력 2 

3

예제 입력 3 

nljj

예제 출력 3 

3

예제 입력 4 

c=c=

예제 출력 4 

2

예제 입력 5 

dz=ak

예제 출력 5 

3

 

📋풀이방법

1. 문자열에서 크로아티아 알파벳에 해당되는 알파벳을 찾아서 따로 빼야한다.

2. 이때 그냥 한글자로 된 알파벳이 있으므로 그 조건도 유의해야한다.

 

 

 

 

🤟내 풀이

const fs = require("fs");
const filePath = process.platform === "linux" ? "/dev/stdin" : "./input.txt";
let input = fs.readFileSync(filePath).toString().trim();
input=input.match(/(c=|c-|dz=|d-|lj|nj|s=|z=|[a-z])/g)

console.log(input.length);

-match를 사용해서 크로아티아 알파벳과 a-z에 해당되는 알파벳을 걸러줘서 배열로 반환되는 input의 length를 구했다.

 

 

👍백준에서 다른 풀이

const fs = require("fs");
const input = (
  process.platform === "linux"
    ? fs.readFileSync("/dev/stdin").toString()
    : `ljes=njak`
).trim();

let croatia = ["c=", "c-", "dz=", "d-", "lj", "nj", "s=", "z="];

function solution(input) {
  for (let alphabet of croatia) {
    input = input.split(alphabet).join("Q");
  }

  return input.length; // return input일 경우 QeQQak를 반환한다.
}

console.log(solution(input));

-만약 match 라이브러리를 사용하지 못할 때의 경우도 생각해야하므로 위와 같이 풀 수도 있을거 같다.

 

 

 

💢어려웠던 점

-match를 사용 할 때 정규 표현식에 아직 익숙하지 못했다. 

-정규표현식을 한번 더 보는게 좋을것 같다,

https://inpa.tistory.com/entry/JS-%F0%9F%93%9A-%EC%A0%95%EA%B7%9C%EC%8B%9D-RegExp-%EB%88%84%EA%B5%AC%EB%82%98-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0-%EC%89%BD%EA%B2%8C-%EC%A0%95%EB%A6%AC

 

📚 JavaScript 정규 표현식 문법 총정리 + 응용 예제

정규 표현식(Regular Expression) 정규식(Regular Expression)은 문자열에서 특정 내용을 찾거나 대체 또는 발췌하는데 사용된다. 대표적으로 입력칸에 전화번호나 이메일을 입력하라고 했을때 옳지 않은

inpa.tistory.com

 

728x90
반응형
LIST