백준 - 반올림(4539번)

BooKi·2022년 6월 24일
0

백준

목록 보기
50/64
post-thumbnail

백준 - 반올림(4539번)

문제

문제

정수 x가 주어졌을 때, 10보다 크다면, 1의 자리에서 반올림하고, 

결과가 100보다 크면, 10의 자리에서 반올림하고, 

1000보다 크면, 100의 자리에서 반올림하고... 

이와 같이 계속 반올림하는 프로그램을 작성하시오.

입력

첫째 줄에 테스트 케이스의 개수 n이 주어진다. 

각 테스트 케이스는 한 줄로 이루어져 있으며, 정수 x가 주어진다. (0 ≤ x ≤ 99999999)

출력

각 테스트 케이스마다 입력으로 주어지는 정수를 문제 설명에 나온 것처럼 반올림한 결과를 출력한다.

예제 입력 1

9
15
14
4
5
99
12345678
44444445
1445
446

예제 출력 1

20
10
4
5
100
10000000
50000000
2000
500

제출

let fs = require('fs')
let inp = fs.readFileSync('/dev/stdin').toString().split('\n')
let ans = ''
for(let i = 1; i<=Number(inp[0]); i++){
  let num = inp[i].split('')
  if(num.length === 1){
    ans += `${num}\n`
  }else{
    for(let j = num.length-1; j>0; j--){
      if(Number(num[j])>=5){
        num[j-1] = Number(num[j-1])+1
        num[j]= 0
      }else{
        num[j]= 0
      }
    }
    ans +=`${num.join('')}\n`
  }
}
console.log(ans)

옛날에 2033번(반올림) 문제와 똑같은데 입력양에 차이가 있다

근데 정말 이상한게 2033번은 위와 같은 코드를 입력했을 때 틀렸다고 나왔다

물론 위 코드랑은 조금 차이는 있지만 같은 로직을 사용했다

근데 2033번은 틀리다고 나왔고 4539번은 맞았다

로직은 간단하다

뒷자리부터 파악하면서 5이상이면 해당자리를 0으로 바꾸고 그 앞자리를 1을 올리는 로직이다

profile
성장을 보여주는 기록

0개의 댓글