-
백준 1568번 : 새 (C 언어)c c++ 언어 공부 2023. 11. 7. 09:56
https://www.acmicpc.net/problem/1568
1568번: 새
N마리의 새가 나무에 앉아있고, 자연수를 배우기 원한다. 새들은 1부터 모든 자연수를 오름차순으로 노래한다. 어떤 숫자 K를 노래할 때, K마리의 새가 나무에서 하늘을 향해 날아간다. 만약, 현
www.acmicpc.net
Code:
12345678910111213141516171819202122232425262728293031#include <stdio.h>#pragma warning(disable:4996)int main() {int n;scanf("%d", &n);int a = 1;int count = 0;while (1){if (n - a >= 0){n -= a;a++;count++;}else{if (n > 0){a = 1;}}if (n == 0){break;}}printf("%d", count);}cs 문제 설명:
N마리의 새가 나무에 앉아서 자연수를 노래하며, 각 숫자를 노래할 때 해당 숫자만큼의 새가 날아가게 됩니다. 만약 현재 나무에 앉아 있는 새의 수가 노래하려는 숫자보다 작다면, 처음부터 1부터 다시 시작합니다. 입력으로 주어진 N을 모든 새가 날아가기까지 걸리는 시간(초)으로 출력해야 합니다.
코드 설명:
- 사용자로부터 N을 입력받습니다.
- 변수 a는 현재 노래 중인 숫자를 나타내며, count는 경과한 시간(초)를 나타냅니다.
- while (1) 루프를 사용하여 무한 루프를 시작합니다.
- 현재 노래하려는 숫자 a가 나무에 앉아 있는 새의 수 n보다 작거나 같을 때, n에서 a를 뺀 값을 업데이트하고 a를 1 증가시켜서 다음 숫자를 노래합니다. 동시에 count를 1 증가시킵니다.
- 만약 n - a가 음수가 되면, 나무에 앉아 있는 새의 수가 현재 노래 중인 숫자보다 작다는 뜻이므로, 다시 처음부터 1부터 시작합니다. a를 1로 초기화합니다.
- n이 0이 되면, 모든 새가 날아갔으므로 무한 루프를 종료합니다.
- 경과한 시간 count를 출력합니다.
'c c++ 언어 공부' 카테고리의 다른 글
백준 17356번 : 욱 제 (C 언어) (0) 2023.11.09 백준 2547번 : 사탕 선생 고창영 (C 언어) (0) 2023.11.08 백준 3035번 : 스캐너 (C 언어) (0) 2023.11.06 백준 15873번 : 공백 없는 A+B (C 언어) (0) 2023.11.04 백준 2576번 : 홀수 (C 언어) (0) 2023.11.03