복대가리의 개발

[C#] 백준 (알고리즘)/브론즈 문제

[백준 - C#] 1568 새

복대가리 2022. 7. 18. 22:26
728x90

문제링크

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

 

1568번: 새

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

www.acmicpc.net

 

문제

N마리의 새가 나무에 앉아있고, 자연수를 배우기 원한다. 새들은 1부터 모든 자연수를 오름차순으로 노래한다.
어떤 숫자 K를 노래할 때, K마리의 새가 나무에서 하늘을 향해 날아간다. 만약, 현재 나무에 앉아있는 새의 수가 지금 불러야 하는 수 보다 작을 때는, 1부터 게임을 다시 시작한다.
나무에 앉아 있는 새의 수 N이 주어질 때, 하나의 수를 노래하는데 1초가 걸린다고 하면, 모든 새가 날아가기까지 총 몇 초가 걸리는지 출력하는 프로그램을 작성하시오.

조건

시간제한 : 2초
메모리 제한 : 128 MB

입력

첫째 줄에 새의 수 N이 주어진다. 이 값은 10^9보다 작거나 같은 자연수이다.

출력

첫째 줄에 정답을 출력한다.

 

문제정리

이번 문제는 순차적으로 새가 날아가는 만큼 값을 카운팅 해주고 초기화 하는 조건만 알면 풀 수 있는 문제였습니다.

N마리의 새가 0마리가 될때 까지 반복문을 실행시키며 새를 순차적으로 1마리부터 +=1 마리씩 늘려주면 됩니다.

대신 N마리의 새보다 날아가야되는 새가 더 많게되면 1로 초기화하는 조건은 수행하도록 합니다.

 

자세한 내용은 코드와 주석을 보며 이해하면 쉽게 파악 할 수 있습니다.

 

C# 코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
static void Main(string[] args)
{
    StreamWriter writer = new StreamWriter(Console.OpenStandardOutput());
    StreamReader reader = new StreamReader(Console.OpenStandardInput());
 
    int input = int.Parse(reader.ReadLine());
 
    int count = 1;
    int second = 0;
 
    while (input > 0)
    {
        // 새가 날아가는 만큼 빼줍니다.
        input -= count;
 
        // 날아는 새의 수와 총 걸린 초를 누적시켜줍니다.
        count++;
        second++;
 
        // 앉아있는 새의 수 보다 날아가야 되는 새의 수가 많으면 1로 초기화
        if (input < count)
            count = 1;
    }
 
    writer.WriteLine(second);
 
    writer.Close();
    reader.Close();
}
cs

읽어주셔서 감사합니다 오늘도 즐거운 하루 되세요.

 

728x90