백준 1316번 그룹 단어 체커 - node.js
해당 포스팅은 백준 1316번 그룹 단어 체커 풀이를 다룬다. 문제 링크
코드는 javascript로 작성하였다.
문제
문제 설명
- 그룹 단어란 단어에 존재하는 모든 문자에 대해서, 각 문자가 연속해서 나타나는 경우만을 말한다.
- 예제
ccazzzzbb
ccazzzzbb는 c, a, z, b가 모두 연속해서 나타나고, kin도 k, i, n이 연속해서 나타나기 때문에 그룹 단어이다.aabbbccb
aabbbccb는 b가 떨어져서 나타나기 때문에 그룹 단어가 아니다.
단어 N개를 입력으로 받아 그룹 단어의 개수를 출력하는 프로그램을 작성하시오.
입력
[첫째 줄]
: 단어의 개수 N (1 ≤ N ≤ 100)[둘째 줄 ~ N개의 줄]
: 단어가 들어온다. 단어는 알파벳 소문자로만 되어있고 중복되지 않으며, 길이는 최대 100이다.
출력
첫째 줄에 그룹 단어의 개수를 출력한다.
풀이
문자열에 같은 알파벳이 연속해서
나온다면 그룹단어, 하나라도 떨어져서 나타날 시
그룹단어가 아니다. 입력값으로 주어지는 단어들 중 그룹단어에 해당되는 개수를 출력하면 된다.
따라서 인덱스 i의 원소와 인덱스 i+1의 원소가 다를
시, 뒤에서 인덱스 i의 원소와 동일한 원소가 나오면
해당 단어는 그룹단어가 아니다.
그러므로 먼저 단어 개수인 N을 그룹단어 개수로 초기화
한 다음 각 단어를 위의 로직을 통해 검증하자. 단어 리스트를 돌면서 유효하지 않은 단어의 경우 N -= 1을 하면 그룹단어의 개수를 확인할 수 있다.
전체 코드
const input = require('fs').readFileSync('/dev/stdin').toString().split('\n').slice(0, -1);
// 단어 개수인 N을 그룹단어 개수로 초기화
let N = Number(input.shift());
// 단어 리스트
const parsed = [...input];
// 단어리스트 loop
for (let el of parsed) {
const len = el.length-1;
// 단어 요소 loop
for (let i=0; i < len; i++) {
// 인덱스 i와 i+1 값이 다를 경우,
if (el[i] !== el[i+1]) {
// 인덱스 i+2 이후에 인덱스 i와 동일한 알파벳이 나올 경우 그룹단어가 아니다.
const test = el.slice(i+2);
if (test.includes(el[i])) {
// 그룹단어 제거
N--;
break;
}
}
}
}
console.log(N);
Author And Source
이 문제에 관하여(백준 1316번 그룹 단어 체커 - node.js), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@dev-redo/백준-1316번-그룹-단어-체커-node.js저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)