블로그를 이전하였습니다. 2023년 11월부터 https://bluemiv.github.io/에서 블로그를 운영하려고 합니다. 앞으로 해당 블로그의 댓글은 읽지 못할 수 도 있으니 양해바랍니다.
반응형
문제의 저작권은 백준 알고리즘(https://www.acmicpc.net/)에 있습니다
문제
풀이
전체 코드
const solution = (input) => {
const s = input.split('');
let cnt = 0;
for (let i = 0; i < s.length; i++) {
const c = s[i];
const nc = s[i + 1];
const nnc = s[i + 2];
if (c === 'd') {
if (i + 2 < s.length && nc === 'z' && nnc === '=') {
i += 2;
} else if (i + 1 < s.length && nc === '-') {
i++;
}
} else if (c === 'c' && i + 1 < s.length && ['=', '-'].includes(nc)) {
i++;
} else if (['l', 'n'].includes(c) && i + 1 < s.length && nc === 'j') {
i++;
} else if (['s', 'z'].includes(c) && i + 1 < s.length && nc === '=') {
i++;
}
cnt++;
}
return cnt;
};
require('readline')
.createInterface(process.stdin, process.stdout)
.on('line', (input) => console.log(solution(input)))
.on('close', () => process.exit(0));
상세 풀이
아래의 경우가 크로아티아 알파벳이다. 이때는 카운팅을 1만 한다.
- d 로 시작할 때, 그 다음에 'z=' 또는 '-'가 오는 경우
- c로 시작할 때, 그 다음에 '=' 또는 '-'가 오는 경우
- l과 n으로 시작할 때, 그 다음에 'j' 가 오는 경우
- s와 z로 시작할 때, 그 다음에 '='가 오는 경우
위 4가지 경우를 제외하고 모든 단어는 그냥 알파벳이기 때문에, 한 글자씩 카운팅을 한다.
전체 코드
https://github.com/bluemiv/Algorithm/blob/master/baekjoon/nodejs/src/ex02/ex2941.js
풀이 결과
관련 글
2022.07.21 - [Algorithm/Beakjoon] - jest 단위테스트를 이용하여 백준 알고리즘 문제 편하게 풀기
반응형
'Algorithm > Beakjoon' 카테고리의 다른 글
백준 2675번 / 문자열 반복 (nodejs 알고리즘 풀이) (0) | 2022.08.29 |
---|---|
백준 10818번 / 최소, 최대 (nodejs 알고리즘 풀이) (0) | 2022.08.27 |
백준 5622번 / 다이얼 (nodejs 알고리즘 풀이) (0) | 2022.08.24 |
백준 1157번 / 단어 공부 (nodejs 알고리즘 풀이) (0) | 2022.08.21 |
백준 11720번 / 숫자의 합 (nodejs 알고리즘 풀이) (0) | 2022.08.19 |