새
시간 제한 | 메모리 제한 | 제출 | 정답 | 맞힌 사람 | 정답 비율 |
2 초 | 128 MB | 5865 | 4306 | 3797 | 74.818% |
문제
N마리의 새가 나무에 앉아있고, 자연수를 배우기 원한다. 새들은 1부터 모든 자연수를 오름차순으로 노래한다. 어떤 숫자 K를 노래할 때, K마리의 새가 나무에서 하늘을 향해 날아간다. 만약, 현재 나무에 앉아있는 새의 수가 지금 불러야 하는 수 보다 작을 때는, 1부터 게임을 다시 시작한다.
나무에 앉아 있는 새의 수 N이 주어질 때, 하나의 수를 노래하는데 1초가 걸린다고 하면, 모든 새가 날아가기까지 총 몇 초가 걸리는지 출력하는 프로그램을 작성하시오.
입력
첫째 줄에 새의 수 N이 주어진다. 이 값은 109보다 작거나 같은 자연수이다.
출력
첫째 줄에 정답을 출력한다.
예제 입력 1
14
예제 출력 1
7
예제 입력 2
1
예제 출력 2
1
예제 입력 3
3
예제 출력 3
2
예제 입력 4
4
예제 출력 4
3
예제 입력 5
100
예제 출력 5
18
처음에 이 문제를 봤을 땐 이게 뭔소리야...? 싶었다...
n이 주어지고 k도 주어져야 되는거 아닌가..? 하고,,
근데 그냥 n마리가 다 날아갈 때까지 총 몇 초가 걸리냐는 거니까
k는 1 부터 다 날아갈 때까지 계속 ++ 해주면 되는 거였다!
그!런!데!
만약, 현재 나무에 앉아있는 새의 수가 지금 불러야 하는 수 보다 작을 때는, 1부터 게임을 다시 시작한다.
이 조건이 있다!
예를 들어 n이 4면
4마리가 다 날아가려면
k = 1 s = 1 n = n-k (4-1 = 3)
k = 2 s = 2 n = 3-2= 1
k = 1 s = 3 n = 1-1= 0 << 원래 k는 3이지만 현재 n은 1이고 그럼 k보다 n이 작으니까 k가 다시 1
그래서 n이 4면 다 날아갈 때 걸리는 시간은 3이다.
let n = Number(require('fs').readFileSync('./input.txt').toString().trim())
let k = 1
let s = 0
function solution(n, k, s) {
while (n > 0) {
k++
if(n > k) {
n-= k
s++
}
if (n <= k) {
k = 1
n-= k
s++
}
}
return s
}
console.log(solution(n, k, s))
이걸 코드로 옮기면 이렇게 된다! 이해한 내용대로 코드를 짰다.
'Study > Algorithm' 카테고리의 다른 글
[프로그래머스] 주사위 게임 3 - JavaScript (0) | 2023.05.09 |
---|---|
[백준] 1236번 성 지키기 - Node.js/JavaScript (0) | 2022.12.23 |
[백준] 1668번 트로피 진열 - Node.js/JavaScript (0) | 2022.12.15 |
[백준] 1302번 베스트셀러 - Node.js/JavaScript (0) | 2022.12.13 |
[백준] 1543번 문서 검색 - Node.js/JavaScript (0) | 2022.11.30 |