[백준] 14916번: 거스롬돈 (Java)

seri·2024년 7월 4일
0

코딩테스트 챌린지

목록 보기
11/62

문제: https://www.acmicpc.net/problem/14916

📌 문제 탐색하기

입력 : 거스름돈 액수 n (1 ≤ n ≤ 100,000)
출력 : 거스름돈 동전의 최소 개수, 단, 거슬러 줄 수 없으면 -1

가능한 시간복잡도

O(N)

알고리즘 선택

그리디

📌 코드 설계하기

  1. 거스름돈 액수 n을 Input으로 받는다.
  2. 5원으로 n을 나눌 수 있다면 나눠주고 result에 몫을 더해준다.
  3. 5원으로 n을 나눌 수 없다면 n에서 2원씩 빼주고 result을 1씩 증가시킨다. 2~3 과정을 n이 0보다 클때까지 반복한다.
  4. n이 0보다 작으면 -1을 출력하고, 아니면 result를 출력한다.

📌 시도 회차 수정 사항 (Optional)

💡 시도별 수정 사항은 어떻게 작성하나요?
- 무문별하게 “맞았습니다”가 나올때 까지 수정하는 형태의 문제 풀이를 반복하면 , 내가 어떤 실수를 해서 해당 문제를 틀렸는지 모르게 됩니다.
- 틀렸습니다를 받았다면 왜 틀렸는지 고민해보고 , 어떻게 수정할 수 있는지 고민하는 과정을 작성해주시면 됩니다.
- 위에 내가 세울 설계에서 어떤 부분이 틀렸는지도 함께 점검해보세요
- 한번에 맞출수도 있기 때문에 이 칸은 Optional입니다.

1회차

2회차

📌 정답 코드

import java.util.*;

public class Main {
    public static void main (String args[]) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int result = 0;
        
        while (n > 0) {
            if (n%5 == 0) {
                result += n/5;
                break;
            }
            n -= 2;
            result++;
        }
        
        if (n < 0) {
            System.out.print(-1);
        } else {
            System.out.print(result);
        }
    }
}
profile
꾸준히 정진하며 나아가기

0개의 댓글