문제
1316번: 그룹 단어 체커
그룹 단어란 단어에 존재하는 모든 문자에 대해서, 각 문자가 연속해서 나타나는 경우만을 말한다. 예를 들면, ccazzzzbb는 c, a, z, b가 모두 연속해서 나타나고, kin도 k, i, n이 연속해서 나타나기 때
www.acmicpc.net
메모
- Array.length: 배열의 길이를 반환한다. 반환값은 부호 없는 32비트 정수형이며, 배열의 최대 인덱스보다 항상 크다. length 속성에 값을 설정할 경우 배열의 길이를 변경한다.
- Array.prototype.indexOf(): 배열에서 지정된 요소를 찾을 수 있는 첫 번째 인덱스를 반환하고 존재하지 않으면 -1을 반환한다.
- Array.prototype.push(): 배열의 끝에 하나 이상의 요소를 추가하고, 배열의 새로운 길이를 반환한다.
정답
let fs = require("fs");
let filePath = process.platform === "linux" ? "/dev/stdin" : "test.txt";
let input = fs.readFileSync(filePath).toString().trim().split("\n");
// 체크할 문자열 개수
let num = input[0];
// 그룹 단어 개수
let count = 0;
for (let i = 1; i <= num; i++) {
let word = input[i]; // 문자열 확인에 필요한 배열
let chkArr = []; // 그룹 단어 배열
let isGroupWord = true;
for (let j = 0; j < word.length; j++) {
// 확인할 문자열의 letter가 새로운 chkArr 없다면 넣어줌
if (chkArr.indexOf(word[j]) === -1) {
chkArr.push(word[j]);
} else {
// 체크할 문자열의 알파벳이 chkArr에 있지만
// 그 index가 chkArr.length가 아니면
// 연속되지 않는 위치에 같은 문자열이 위치함을 의미
if (chkArr.indexOf(word[j]) !== chkArr.length - 1) {
// 그룹 단어가 아님
isGroupWord = false;
break;
}
}
}
// 그룹 단어일 때 true이므로 true 값일 때 count++
if (isGroupWord) {
count++;
}
}
console.log(count);