본문 바로가기
Algorithm/Baekjoon

백준 10952번

by minhi 2024. 10. 7.

백준 10952번을 풀어보았다.

 

이러한 형태의 조건의 경우 for문보다는 while문을 쓰는 것이 더 적절하지만

 

while문 풀이가 바로 생각나지 않아 먼저 for문을 사용해 풀어보았다.

let input = require('fs').readFileSync('/dev/stdin').toString().split('\n')

let output = ''

for (let i = 0; i < input.length; i++) {
  const [a, b] = input[i].split(' ').map(Number)

  if (a === 0 && b === 0) break

  output += `${a+b}\n`
}

console.log(output.trim())

 

그러나 이 풀이는 다음의 미흡한 부분이 있다.

  • 반복 종료가 0 0 입력으로 이루어진다는 조건을 사용하지 않고 반복 종료의 조건을 i === input.length로 설정한 것
  • a === 0 && b === 0으로 조건을 활용하는 듯 보이나, 사실 이는 i < input.length - 1로 수정함으로써 대체할 수 있다는 것

즉, for문으로는 input의 길이를 반복 종료의 조건으로 설정하는 것이 더 자연스럽고

 

따라서 주어진 조건을 제대로 활용할 수 없다.

 

while문을 사용한 풀이는 다음과 같다.

let input = require('fs').readFileSync('/dev/stdin').toString().split('\n')

let output = ''

let i = 0

while (input[i] !== '0 0') {
  const [a, b] = input[i].split(' ').map(Number)

  output += `${a+b}\n`

  i += 1
}

console.log(output.trim())

 

이때까지 input[i]를 공백으로 나눈 뒤 각각 처리한 적이 많았다보니

 

while의 조건문도 각각이 모두 0이 아닌 경우로 세울 생각만 했지 input[i] 자체로 조건문을 세울 생각은 못 했다.

 

💫 이 문제를 통해 배운 것

input[i]는 '0 0'과 같은 형태의 문자열 자료형으로, 때로는 input[i] 자체로 바라보는 시각이 필요하다.

'Algorithm > Baekjoon' 카테고리의 다른 글

백준 10951번  (0) 2024.10.09
백준 10871번  (3) 2024.10.09
테스트 케이스의 개수를 입력받는 유형  (2) 2024.10.06
백준 25314번  (0) 2024.10.05
백준 8393번  (2) 2024.10.04