백준 1568 : 새
문제 링크:
https://www.acmicpc.net/problem/1568
문제 내용:
(요약) 새들은 1부터 모든 자연수를 오름차순으로 노래한다. 숫자 K를 노래할 때, K마리의 새가 하늘을 향해 날아간다. 만약, 현재 나무에 앉아있는 새의 수가 지금 불러야 하는 수 보다 작을 때는, 1부터 다시 시작한다.
앉아있는 새 N마리가 주어질 때, 하나의 수를 노래하는데 1초가 걸린다고 하면, 모든 새가 날아가기까지 총 몇 초가 걸리는가?
Idea:
새들은 1, 2, 3, .... , k 마리씩 노래하다가 날아가고, 현재 나무에 앉아있는 새의 수가 지금 불러야하는 수보다는 작을 땐 1부터 다시 시작한다.
따라서 알고리즘은 아래와 같다.
- k를 1씩 증가시키며 N마리에서 빼준다.
- 만약 N이 k보다 작다면 k를 1로 초기화하여 반복한다.
- 결과값이 0이 나오면 탐색을 종료한다.
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
#include <stdio.h>
int main() {
int n, k = 0, time = 0;
scanf("%d", &n);
while (1) {
k++;
if (n == 0) break;
if (n < k) k = 1;
n -= k;
time++;
}
printf("%d\n", time);
return 0;
}
|
cs |
'백준 Baekjoon' 카테고리의 다른 글
[C언어] 백준 1806 : 부분합 (0) | 2020.09.15 |
---|---|
[C언어] 백준 2231 : 분해합 (0) | 2020.08.16 |
[C언어] 백준 10870 : 피보나치 수 5 (0) | 2020.08.14 |
[C언어] 백준 10872 : 팩토리얼 (0) | 2020.08.14 |
[C++] 백준 1920 : 수 찾기 (0) | 2020.08.06 |