| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 |
- 1789 node.js
- 1931 node.js
- IT5분잡학사전
- 모던자바스크립트 딥다이브
- 백준1789
- 자바스크립트 딥다이브
- 노마드북클럽
- 11399 node.js
- 모던자바스크립트DeepDive
- 2217 node.js
- 코딩
- 개발자
- 노마드스터디
- 개인프로젝트
- Javascript
- 백준25176
- 1026 node.js
- 백준21313
- 자바스크립트 일급객체
- 노개북
- 11047 node.js
- 자바스크립트 함수
- 1541 node.js
- 14655 nodejs
- flex box
- const
- 모던자바스크립트
- 백준1026
- 21313 nodejs
- CSS flex
- Today
- Total
캐또's coding
1316 - 그룹 단어 체커 - node.js 본문
https://www.acmicpc.net/problem/1316
1316번: 그룹 단어 체커
그룹 단어란 단어에 존재하는 모든 문자에 대해서, 각 문자가 연속해서 나타나는 경우만을 말한다. 예를 들면, ccazzzzbb는 c, a, z, b가 모두 연속해서 나타나고, kin도 k, i, n이 연속해서 나타나기 때
www.acmicpc.net
첫 줄에는 테스트케이스의 갯수, 다음 줄부터 테스트케이스가 들어온다. 그룹단어가 몇 개인지 최종 출력하면 되는 문제인데, 그룹단어는 알파벳들이 따로 떨어지지 않은 것을 말한다. a, ab, aab는 그룹단어지만 aba, abba는 그룹단어가 아니다.
쉽게 생각해보면 각 테스트케이스 줄마다의 단어를 ''로 나누고, 반복문을 돌리면서 하나씩 빈 문자열에 추가해주고, 반복문마다 문자열에 있는지 includes()로 찾
간단히 생각한다면 지금까지 문제를 해결했던 방법과 마찬가지로 문제의 첫 줄로 전체 반복의 횟수를 잡고, 다음 줄부터 다시 문자를 ''를 기준으로 나눠 array를 만든 뒤 반복문을 돌리면 될 것이다. 반복문 안에서는, 만약 지금 반복문으로 돌리고 있는 문자가 새로운 array에 중복되는 것이 있는지 찾아서 만약 중복 값이 있다면 지금 반복문 인덱스의 -1요소와 지금 도는 요소가 같은지 검사한다.
그러니 곧,
1. 지금 반복문에 들어온 값이 새 array에 없다 => 체크 필요 없이 array에 추가해줄 것
2. 지금 반복문에 들어온 값이 새 array에 있다?
2.1. 그리고 지금 들어온 값과 -1 인덱스의 값이 같다 => 연속등장중이니 그냥 넘어감
2.2. 그리고 지금 들어온 값과 -1 인덱스의 값이 다르다 => 그룹단어 아니므로 패스
3. 반복문 종료 후 count +1
4. 모든 반복문 종료 후 count 출력
const input = require("fs").readFileSync("/dev/stdin").toString().trim().split("\n");
let count = 0;
let result = [];
for (let i = 1; i < Number(input[0]) + 1; i++) {
let splitChar = input[i].trim().split("");
result = [];
for (let j = 0; j < splitChar.length; j++) {
if (!result.includes(splitChar[j])) {
result.push(splitChar[j]);
} else if (splitChar[j] != splitChar[j - 1]) {
count--;
break;
}
}
count++;
}
console.log(count);
조건문에서 지금까지 추가한 result라는 새 array에 중복값이 있다면 else if문으로 넘어갈텐데 거기서 비교해본 뒤 break를 걸어줘야 단어의 나머지에 대해서 반복이 돌지 않아 정답으로 나오게 된다. break의 필요성..
'기초 공부 > 백준 문제 풀이' 카테고리의 다른 글
| 2292 - 벌집 - node.js (0) | 2022.08.24 |
|---|---|
| 1316 - 손익분기점 - node.js (0) | 2022.08.23 |
| 2941 - 크로아티아 알파벳 - node.js (0) | 2022.08.23 |
| 5622 - 다이얼 - node.js (0) | 2022.08.22 |
| 2908 - 상수 - node.js (0) | 2022.08.22 |