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 |