본문 바로가기
알고리즘 문제

[알고리즘 문제] 백준1568 - 새

by 박연호의 개발 블로그 2019. 7. 5.

처음에 문제가 이해 잘 안되서 몇번을 읽어본 것 같다.

 

문제를 풀어보면, N마리가 1,2,3,4...로 날아가는데 만약 다음 날아가야할 숫자보다 현재 남아있는 새의 숫자가 작으면 다시 1부터 날아간다.

한번 날아갈 때 마다 1이 걸린다고 했을 때, 총 몇초가 걸리는지 문제이다.

 

 

1마리가 날아가면 13마리가 남는다.

2마리가 날아가면 11마리가 남는다.

3마리가 날아가면 8마리가 남는다.

4마리가 날아가면 4마리가 남는다.

1마리가 날아가면 3마리가 남는다. --> 여기서 조건이 걸리게 되므로 다시 날아가야할 마리수가 1로 초기화 됨

2마리가 날아가면 1마리가 남는다. 

1마리가 날아가면 0마리가 남는다. 

import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        int n = sc.nextInt();
        int bird = 1;
        int count = 0;

        while (n >= 1) {
            if (n < bird) {
                bird = 1;
            }
            n -= bird;
            bird++;
            count++;
        }

        System.out.println(count);
    }
}

-->여기서 조건이 걸리게 되므로 다시 날아가야할 마리수가 1로 초기화 됨