망나니 AWOS의 일상
article thumbnail
Published 2021. 8. 10. 17:07
[java] 백준 1568번 새 알고리즘/백준

문제 요약

  1. 새들은 1부터 ~ 모든 자연수까지 오름차순으로 노래한다.
  2. 숫자 K를 노래할 때 K 마리만큼 날아간다.
  3. 남은 N마리의 새가 불러야 할 숫자보다 작으면 1부터 다시 부른다.
  4. 모든 새가 날아가기까지 총 몇 초가 걸리는지 출력. (날아가는데 1초)

문제 풀이

  1. K는 1씩 증가 N이 K보다 작아지기 전까지 N은 K만큼 감산
  2. 감산을 하는 동안 count를 하나씩 누적
  3. N이 K보다 작다면 3번과 같이 K를 1로 초기화시켜주고 다시 N에 K만큼 감산
  4. N이 0이 될 때까지 이 동작을 반복
  5. N이 0이 되면 반복문을 탈출하고 count 출력

1. N=14

K N
1 13
2 11
3 8
4 4
5 -1

count = 4

 

2. N=4

K N
1 3
2 1
3 -2

count = 2

 

3. N = 1

K N
1 1

count = 1

 

4. N = 0 -> 반복문 탈출하고 count 출력.

 

코딩하기전 생각...

N이 주어진 범위가 없다 보니 N이 1마리 이상일 때 까지만 반복문이 돌 수 있도록 하였다.

나머지는 공책에 쓴 것과 문제 풀이 부분을 보면 쉽게 구현할 수 있다.

 

완성된 코드 🧐🧐

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int N = sc.nextInt();
        int K = 1;
        int count = 0;

        while (N>0) {
            if(N < K)
                K = 1;
            N -= K;
            count++;
            K++;
        }
        System.out.println(count);
    }
}

 

profile

망나니 AWOS의 일상

@AWOS

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!