백준 문제 풀이

Yullc·2025년 3월 17일

12. 두 수 비교하기

두 정수 A와 B가 주어졌을 때, A와 B를 비교하는 프로그램을 작성하시오.

import java.util.Scanner;

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

        if(a<b){
            System.out.println("<");
        }
        else if(a>b){
            System.out.println(">");
        }
        else System.out.println("==");

    }
}
  • a,b 두개의 숫자를 입력받는 변수로 선언하고 조건문인 if,else if, else를 사용해서 비교한다.
    이 문제에서는 a가b보다 클 때, a가 b보다 작을 때, a랑b가 같을 때를 비교해서 서로 조건이 맞을때 출력시키는 프로그램이다.

13. 시험성적

시험 점수를 입력받아 90 ~ 100점은 A, 80 ~ 89점은 B, 70 ~ 79점은 C, 60 ~ 69점은 D, 나머지 점수는 F를 출력하는 프로그램을 작성하시오.

import java.util.Scanner;

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

        if(a>=90){
            System.out.println("A");
        }
        else if(80<=a&&a<90){
            System.out.println("B");
        }
        else if(70<=a&&a<80){
            System.out.println("C");
        }
        else if(60<=a&&a<70){
            System.out.println("D");
        }
        else System.out.println("F");

    }
}
  • 시험 점수를 입력하는 변수 a를 선언한 후, if문을 활용해 각각의 if에 시험 점수 범위를 조건식으로 놓아 a가 if문을 돌면서 조건이 참인 식에 들어가 해당 print문을 출력한다.

14. 윤년

연도가 주어졌을 때, 윤년이면 1, 아니면 0을 출력하는 프로그램을 작성하시오.
윤년은 연도가 4의 배수이면서, 100의 배수가 아닐 때 또는 400의 배수일 때이다.
예를 들어, 2012년은 4의 배수이면서 100의 배수가 아니라서 윤년이다. 1900년은 100의 배수이고 400의 배수는 아니기 때문에 윤년이 아니다. 하지만, 2000년은 400의 배수이기 때문에 윤년이다.

import java.util.Scanner;

class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int a = sc.nextInt();
        if(a%4==0&&a%100!=0||a%400==0){
            System.out.println(1);
        }
        else System.out.println(0);


    }
}
  • 다행이 문제에서 윤년이 어떤건지 설명을 해줘서 문제 그대로를 코드로 변경하면 된다. '4의 배수이면서, 100의 배수가 아닐 때 ' 이 부분은 둘다 참이어야 윤년이니까 &&연산자를 사용하고
    '또는 400배의 배수일 때이다.' 이 부분은 또는 이라는 단어가 들어갔으니 ||연산자를 사용하여 문제를 해결 할 수 있다.

15. 사분면 고르기

흔한 수학 문제 중 하나는 주어진 점이 어느 사분면에 속하는지 알아내는 것이다. 사분면은 아래 그림처럼 1부터 4까지 번호를 갖는다. "Quadrant n"은 "제n사분면"이라는 뜻이다.
예를 들어, 좌표가 (12, 5)인 점 A는 x좌표와 y좌표가 모두 양수이므로 제1사분면에 속한다. 점 B는 x좌표가 음수이고 y좌표가 양수이므로 제2사분면에 속한다.
점의 좌표를 입력받아 그 점이 어느 사분면에 속하는지 알아내는 프로그램을 작성하시오. 단, x좌표와 y좌표는 모두 양수나 음수라고 가정한다.

import java.util.Scanner;
class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int a = sc.nextInt();
        int b = sc.nextInt();

        if(a>0&&b>0){
            System.out.println(1);
        }
        else if(a<0&&b>0){
            System.out.println(2);
        }
        else if(a<0&&b<0){
            System.out.println(3);
        }
        else System.out.println(4);
    }
}
  • 이 문제도 조건식이 둘다 참이어야 된다고 생각해 &&연산자를 이용해 풀이 할 수 있다. 먼저 조건이 4개가 있어야하는데,
  • a,b가 양수일때, a는 양수 b는 음수일 때, a는 음수 b는 양수 일때, a,b
    둘다 음수 일때

그러므로 a,b값을 입력받아 if문을 이용한 조건식을 만들어 조건문을 돌면 해결을 할 수 있는 문제이다.

16. 알람시계

상근이는 매일 아침 알람을 듣고 일어난다. 알람을 듣고 바로 일어나면 다행이겠지만, 항상 조금만 더 자려는 마음 때문에 매일 학교를 지각하고 있다.
상근이는 모든 방법을 동원해보았지만, 조금만 더 자려는 마음은 그 어떤 것도 없앨 수가 없었다.
이런 상근이를 불쌍하게 보던 창영이는 자신이 사용하는 방법을 추천해 주었다.
바로 "45분 일찍 알람 설정하기"이다.
이 방법은 단순하다. 원래 설정되어 있는 알람을 45분 앞서는 시간으로 바꾸는 것이다. 어차피 알람 소리를 들으면, 알람을 끄고 조금 더 잘 것이기 때문이다. 이 방법을 사용하면, 매일 아침 더 잤다는 기분을 느낄 수 있고, 학교도 지각하지 않게 된다.
현재 상근이가 설정한 알람 시각이 주어졌을 때, 창영이의 방법을 사용한다면, 이를 언제로 고쳐야 하는지 구하는 프로그램을 작성하시오.

import java.util.Scanner;
class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int a = sc.nextInt();
        int b = sc.nextInt();
        if(b<45&&a>0){
            System.out.print(a-1+" ");
            System.out.println((b+45)-30);
        }
        else if (b>=45&&a>0){
            System.out.print(a+" ");
            System.out.println(b-45);
        }
        else if(b<45&&a==0){
            System.out.print(23+" ");
            System.out.println((b+45)-30);
        }
        else {
            System.out.print(a+" ");
            System.out.println(b-45);
        }
    }
}
  • 먼저 변수는 시간이랑 분을 a,b로 선언했다.
  • 그리고 45분을 앞서는 알람을 맞춰야 하기 때문에 만약 현재 시간이 45분 이하이면 분을 출력할때 b에 45분을 더해서 30을 빼면 어떨까 라는 생각을 하였다. 그러면 우리가 시간을 계산할 때와 분의 값이 같게 나오게 된다. 그리고 a에서 -1까지 해주면 우리가 원하는 답이 나오게 된다.
  • 만약 현재 시간이 45분 이상이면 그대로 a를 출력하고 b의 값에서 45를 빼주면 된다.
  • a가 0시 일때는 24시 기준이므로 출력할때 23을 고정시키고 45를 빼면 이로써 알람시계를 맞추는 프로그램이 완성된다!

17. 오븐시계

이 문제는 간단하게 말해 시간을 더하는 문제이다.
예를 들어 14시20분에서 30분을 더하면 14 50이 나와야되고, 17시 40분에서 80분을 더하면 19시가 나와야한다.

import java.util.Scanner;

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

        int time = sc.nextInt();
        int minute = sc.nextInt();
        int plus = sc.nextInt();

        int time1;

        if (minute+plus < 60) {
            minute= minute+plus;
        }
        else if (minute+plus>=60){
            time1= (minute+plus)/60;
            minute=(minute+plus)%60;

            time+=time1;
        }
        if(time==24){
            time=0;
        }

        System.out.println(time+" "+minute);
        }
}
  • 나는 먼저 입력 받는 변수는 시간 time, 분 minute, 추가시간 plus 이렇게 변수를 선언을 하기로 했다. 그리고 시간을 더해야 하는데 시간은 0부터 23까지고 분은 0부터 60까지다. 분이 60을 넘기면 시간에 +1을 해야된다 라는 생각으로 코드를 짜보았다.
  • 그래서 나는 입력받는 추가시간 plus까지 minute를 1씩 증가 시킬 계획이었다. 그리고 만약 minute+plus의값이 60아래면 그냥 minute에다 + plus를 한 값이 나오게 한다.
  • 그리고 minute이 60 이상이면 plus를 60으로 나눠서 몫을 time에다가 더해준다. 그리고 나머지를 구해 나머지를 minute에 더해준다.
  • 만약 minute이 60이면 time을 1 증가 시켜주고 minute은 다시 0으로 초기화 시킨다. 라고 생각을 하였다.

18. 주사위 세개

profile
아자아자자

0개의 댓글