Java : 백준(2839) 설탕배달

김선미·2022년 10월 6일
  • 내가 시도한 것: 나눗셈, 나머지 메소드를 각각 만든다음 5로 나눈 나머지를 3으로 나누고 나눗셈 메소드 결과를 더해 출력하려고 했다.

    • 그런데 bufferedReader로 읽은 string 값을 int로 형변환해주지 않아서 오답이 나온 것을 내 방법이 틀렸다고 생각하고 정답을 확인하였다.. 처음부터 형변환을 했으면 정답이 나오는 걸 볼수 있었을거고,, 내 스스로 조건문을 작성해볼수 있었을텐데 아쉽다.
  • 내가 시도한 것 2: 정답을 보니 else if 조건이 'n<0'인 이유가 이해 되지 않아서 디버깅을 했다. n이 음수가 되어도 나눗셈 연산은 할수 있기 때문에 결국 오답이 나오기 때문에 n이 음수이면 조건문을 탈출해야 했다.

public class Main {
    public static void main (String[] args) throws IOException {

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int N = Integer.parseInt(br.readLine());
        int basket = 0;

        while (true) {
            if (N%5 == 0) {
                System.out.println((N/5)+basket);
                break;
            } else if ( N%5 != 0) { // 이 경우 N이 음수가 되어도
                                    //n%5 == 0이 될 때까지 반복문이 멈추지 않고 
                                    //결국 음수로 계산한 오답이 출력된다.
                N = N-3;
                basket++;
            }
        }
  • 정답
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {
    public static void main (String[] args) throws IOException {

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int N = Integer.parseInt(br.readLine());
        int basket = 0;

        while (true) {
            if (N%5 == 0) {
                System.out.println((N/5)+basket);
                break;
            } else if ( N < 0) { // N이 음수가 되면 -1을 출력하고 
            					//조건문을 탈출한다.
                System.out.println(-1);
                break;
            }
            N = N-3;
            basket++;
        }
    }
}
profile
백엔드 개발 공부

0개의 댓글