728x90

Code

😢 간단한 문제지만, 어떻게 하면 효율적으로 풀 수 있을까 고민했던 문제. 결과적으로 그다지 효과적이지 않은..
😊 결국 중첩 for loop을 이용해서 각 word의 문자를 체크하는 방법으로 풀었다.
Object를 하나 만들어주고, 해당 문자가 이미 사용되었다면 charMap에 '문자': true로 넣어주었다.
만약 charMap에 이미 해당 문자가 있다면 해당 word의 index-1과 같은지 비교해주었다.
같다면 그룹단어, 그렇지 않다면 더 이상 검사할 필요가 없기 때문에 counter를 감소시켜주고, break으로 내부 for loop을 끝냈다.
다른 정답자들의 풀이도 좋은 소스가 되었다.
Full Code
| // Group Word Checker |
| // 3rd Solution |
| // For submit |
| // const fs = require('fs'); |
| // const input = fs.readFileSync('/dev/stdin').toString().trim().split('\n'); |
| // For local test |
| // const input = ['3', 'happy', 'new', 'year']; |
| const input = ['4', 'aba', 'abab', 'abcabc', 'a']; |
| const N = parseInt(input.shift()); |
| let counter = N; |
| for (let i = 0; i < N; i++) { |
| const charMap = {}; |
| for (let j = 0; j < input[i].length; j++) { |
| if (!charMap[input[i][j]]) { |
| charMap[input[i][j]] = true; |
| } else if (input[i][j] !== input[i][j - 1]) { |
| counter--; |
| break; |
| } |
| } |
| } |
| console.log(counter); |
| // 1st Solution |
| // For submit |
| // const fs = require('fs'); |
| // const input = fs.readFileSync('/dev/stdin').toString().trim().split('\n'); |
| // For local test |
| // const input = ['3', 'happy', 'new', 'year']; |
| // const input = ['4', 'aba', 'abab', 'abcabc', 'a']; |
| // const N = parseInt(input[0]); |
| // let counter = N; |
| // for (let i = 1; i <= N; i++) { |
| // const charMap = {}; |
| // for (let j = 0; j < input[i].length; j++) { |
| // if (!charMap[input[i][j]]) { |
| // charMap[input[i][j]] = true; |
| // } else if (charMap[input[i][j]] && input[i][j - 1] === input[i][j]) { |
| // continue; |
| // } else { |
| // counter--; |
| // break; |
| // } |
| // } |
| // } |
| // console.log(counter); |
| // 2nd solution(other) |
| // For submit |
| // const fs = require('fs'); |
| // const input = fs.readFileSync('/dev/stdin').toString().trim().split('\n'); |
| // For local test |
| // const input = ['3', 'happy', 'new', 'year']; |
| // const input = ['4', 'aba', 'abab', 'abcabc', 'a']; |
| // const N = parseInt(input.shift()); |
| // let counter = 0; |
| // function checkGroupWord(str) { |
| // const checker = []; |
| // for (let i = 0; i < str.length; i++) { |
| // if (checker.indexOf(str[i]) === -1) { |
| // checker.push(str[i]); |
| // } else { |
| // if (checker[checker.length - 1] !== str[i]) { |
| // return; |
| // } |
| // } |
| // } |
| // counter++; |
| // } |
| // for (let i = 0; i < N; i++) { |
| // checkGroupWord(input[i]); |
| // } |
| // console.log(counter); |
'Algorithm > JavaScript(Node.js)' 카테고리의 다른 글
| 백준 2839번: 설탕 배달(Sugar Delivery) Node.js(JavaScript) (0) | 2020.01.11 |
|---|---|
| 백준 1712번: 손익분기점(Break-Even Point) Node.js(JavaScript) (0) | 2020.01.09 |
| 백준 2941번: 크로아티아 알바펫(Croatia Alphabet) Node.js(JavaScript) (0) | 2020.01.06 |
| 백준 5622번: 다이얼(Dial) Node.js(JavaScript) (0) | 2020.01.06 |
| 백준 2908번: 상수(A man named Sangsu) Node.js(JavaScript) (0) | 2020.01.05 |