728x90
Code
😢 이번 문제는 꽤나 고민을 했다. 첫 풀이 때는, 중첩 for loop을 2번이나 써서 '1. 점수를 얻어내고 2. 점수를 계산하여' 출력 하였다.
하지만 2번째 풀이에서(위의 코드)는 중첩 for loop 한 번으로 점수를 얻음과 동시에 출력하였다. 중첩 for loop을 한 개나 없앴다는 것에 만족한다. 대략 30분 정도 걸렸던 것 같다. 혼자 못 풀 문제는 아니었다.
😊 첫 번째 for {}안에 점수를 표시할 counter와 점수를 더할 eachSum을 선언하였다. 그리고 두 번째 for {}안에서 배열의 해당 index가 O라면 counter를 증가하며 eachSum에 계속 더하였고, X라면 counter가 다시 1로 시작하도록 초기화하였다.
두 번째 for {}이 끝난 후 한 줄의 OX점수를 합한 eachSum을 출력해주었다.
Full Code
// 1st Solution (submitted) |
// const fs = require('fs'); |
// const input = fs.readFileSync('/dev/stdin').toString().trim().split('\n'); |
// For local test |
const input = [ |
'5', |
'OOXXOXXOOO', |
'OOXXOOXXOO', |
'OXOXOXOXOXOXOX', |
'OOOOOOOOOO', |
'OOOOXOOOOXOOOOX' |
]; |
// 2nd Solution |
const N = parseInt(input[0]); |
for (let i = 1; i <= N; i++) { |
let counter = 1; |
let eachSum = 0; |
for (let j = 0; j < input[i].length; j++) { |
if (input[i][j] === 'O') { |
eachSum += counter; |
counter++; |
} else { |
counter = 1; |
} |
} |
console.log(eachSum); |
} |
// 1st Solution |
// const N = parseInt(input[0]); |
// const result = []; |
// let idx = 0; |
// for (let i = 1; i <= N; i++) { |
// let counter = 0; |
// for (let j = 0; j < input[i].length; j++) { |
// if (input[i][j] === 'O') { |
// counter++; |
// result.push(counter); |
// } else { |
// counter = 0; |
// result.push(counter); |
// } |
// } |
// } |
// for (let i = 1; i <= N; i++) { |
// let eachSum = 0; |
// for (let j = 0; j < input[i].length; j++) { |
// eachSum += result[idx]; |
// idx++; |
// } |
// console.log(eachSum); |
// } |
// other solution |
// const N = parseInt(input[0]); |
// for (let i = 0; i < N; i++) { |
// let eachO = String(input[i + 1]).split('X'); |
// let sum = 0; |
// for (let j = 0; j < eachO.length; j++) { |
// for (let k = 1; k <= String(eachO[j]).length; k++) { |
// sum += k; |
// } |
// } |
// console.log(sum); |
// } |
'Algorithm > JavaScript(Node.js)' 카테고리의 다른 글
백준 4344번: 평균은 넘겠지(It'll be above average) Node.js(JavaScript) (0) | 2019.12.28 |
---|---|
Anagrams(철자 순서를 바꾼 말) Node.js(JavaScript) (0) | 2019.12.28 |
The Classic FizzBuzz(3의 배수와 5의 배수 찾기) Node.js(JavaScript) (0) | 2019.12.27 |
Max Chars(가장 많이 쓰인 문자 찾기) Node.js(JavaScript) (0) | 2019.12.27 |
Palindrome(회문 구조) 확인하기 Node.js(JavaScript) (0) | 2019.12.24 |