해당 포스팅은 백준 1316번 그룹 단어 체커 풀이를 다룬다. 문제 링크
코드는 javascript로 작성하였다.
ccazzzzbb
aabbbccb
단어 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);