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 |