새소식

💻 Programming (프로그래밍)/C++ | 백준

[C++][백준] - 새 (1568번)

  • -
https://www.acmicpc.net/problem/1568
 

1568번: 새

N마리의 새가 나무에 앉아있고, 자연수를 배우기 원한다. 새들은 1부터 모든 자연수를 오름차순으로 노래한다. 어떤 숫자 K를 노래할 때, K마리의 새가 나무에서 하늘을 향해 날아간다. 만약, 현

www.acmicpc.net

🔔 문제 : 

N마리의 새가 있고, 1부터 차례대로 N까지 숫자를 부릅니다.

이때 부른 숫자만큼 새가 없어집니다.

또한, 부른 숫자보다 남아있는 새가 적다면 1부터 차례대로 다시 부릅니다.

 

 

숫자 1개를 부를때 1초가 걸린다고 했을 때, 새가 전부 없어지는 시간은 몇초 후 인지 알아맞추는 문제입니다.

 

예를들어 N = 5라 가정할때

남아있는 새 수 = x, 부른 숫자 수 = y 라 가정

(x, y) : (5, 1) -> (4, 2) -> (2, 1) -> (1, 1)

총 4초가 지나고 모든 새가 떠납니다.


🔔 Kick Point :

조건이 무엇인지 잘 생각해보면 쉽게 풀 수 있는 문제입니다.

 

우선 부른 숫자 > 남아 있는 새의 수 일경우 부른 숫자 =1 부터 다시 시작함을 조건으로 나타 낼 수 있으면

코드로 작성하기는 쉽게 하실 수 있겠습니다.

 


🔔 Code :

#include <iostream>
using namespace std;

int main() {
	int N;
	cin >> N;

	int time = 0;
	for (int i = 1; N > 0; i++) {
		
		if (N < i) i = 1;
		time++;
		N -= i;
	}

	cout << time;
}

 

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.