Deep Learning through deep learning

백준 1568 새 본문

Baekjoon_algorithm_heuristic

백준 1568 새

NeuroN 2023. 2. 17. 10:27

https://www.acmicpc.net/

 

Baekjoon Online Judge

Baekjoon Online Judge 프로그래밍 문제를 풀고 온라인으로 채점받을 수 있는 곳입니다.

www.acmicpc.net

[문제 해석]

더보기

반복이 얼마나 될지 몰라 while문을 활용해야하는 문제이다.
또한, 규칙을 찾아 문제를 풀어야하는 구현 문제이기도 하다.
주어진 숫자(변수 N)에 대해 1부터 시작해서 1씩 증가(변수 i)하며 더해지는 수(변수 sum)가 있고, 이 수가 N을 넘는 경우 1로 다시 초기화(변수 i)되는 규칙을 가지고 있다.

입력숫자 N이 주어진다.
증가하는 숫자를 표현하기 위한 i=1, 숫자들을 더하여 N와 비교할 sum = 0, 걸릴 총 초를 계산하는 count = 0 할당
while문을 형성한다.
먼저 while문의 처음에는항상 sum에 i를 더해준다.
이제 sum과 N을 비교하여 N크기를 sum이 넘지 않았다면 i와 count를 1씩 증가시킨다.
만약 sum크기가 N을 넘은 경우에는 방금전 sum에 더한 i값을 다시 빼고, i를 1로 초기화 해준다.
sum == N 인 경우에는 새가 모두 날라간것과 같은 경우이며 count를 1증가시키고 그동안 누적된 초의 합인 count를 출력한다.

[정답 코드]

#include <iostream>
#include <math.h>
#include <algorithm>
#include <vector>
#include <string>
using namespace std;

int main()
{
	ios_base::sync_with_stdio(false);
	cin.tie(NULL);
	cout.tie(NULL);

	int N; cin >> N;
	int i = 1;
	int count = 0;
	int sum = 0;

	while (1)
	{
		sum += i;
		if (sum < N)
		{
			count += 1;
			i++;
		}
		else if (sum > N)
		{
			sum -= i;
			i = 1;
		}
		else
		{
			count += 1;
			cout << count;
			return 0;
		}
	}
}

'Baekjoon_algorithm_heuristic' 카테고리의 다른 글

백준 2164 카드2 큐가 아닌 벡터로 구현  (0) 2023.02.20
백준 10813 공 바꾸기  (0) 2023.02.17
백준 1453 피시방 알바  (0) 2023.02.17
백준 2441 별 찍기 - 4  (0) 2023.02.17
백준 7567번 그릇  (0) 2023.02.08