백준 문제 풀이

Yullc·2025년 3월 17일

1. Hello World

Hello World!를 출력하시오.

class Main {
    public static void main(String[] args) {
        System.out.println("Hello World!");
    }
}
  • 자바의 기본 출력문인 System.out.println을 사용하고 문자열이기 때문에 "" 을 사용해 Hello World!를 출력한다.

2. A+B

두 정수 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();
        System.out.println(a+b);
    }
}
  • print문과 반대로 입력을 받아야 하므로 Scanner를 사용해준다. 그리고 정수 a,b를 각각 값을 입력받아 출력할때 입력받은 a,b의 값을 +해주면 A+B를 출력하는 프로그램이 완성된다.

3. A-B

두 정수 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();
        System.out.println(a-b);
    }
}
  • 더하기 문제와 마찬가지로 출력할 때 +대신 - 를 하여 빼기 연산을 해준다.

4. 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();
        System.out.println(a*b);
    }
}
  • 곱하기 문제도 출력문에서 기호를 *로만 바꾸어주면 곱하기 연산이 출력되는 걸 볼 수 있다.

5. 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();
        System.out.println(a/b);
    }
}
  • 이 문제는 나눗셈을 하여 몫을 구하는 문제이다. 몫을 구하는 연산자는 / 이므로 출력문에서 a/b를 하면 몫을 구할 수 있다.

6. 사칙연산

import java.util.Scanner;

class Main {
    public static void main(String[] args) {
        Scanner s = new Scanner(System.in);
        int a = s.nextInt();
        int b = s.nextInt();
        System.out.println(a+b);
        System.out.println(a-b);
        System.out.println(a*b);
        System.out.println(a/b);
        System.out.println(a%b);
    }
}
  • 앞에서 했던 문제들을 한꺼번에 출력하면 된다. 추가적으로 해야할거는 나머지를 구하는 연산자 %를 추가해주면 사칙연산 프로그램이 완성된다.

7. ??!

준하는 사이트에 회원가입을 하다가 joonas라는 아이디가 이미 존재하는 것을 보고 놀랐다. 준하는 놀람을 ??!로 표현한다. 준하가 가입하려고 하는 사이트에 이미 존재하는 아이디가 주어졌을 때, 놀람을 표현하는 프로그램을 작성하시오.

import java.util.Scanner;

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

        System.out.println(s+"??!");

    }
}
  • 간단하게 문자열 뒤에 ??!을 붙여서 출력하는 문제이다. 문자열을 입력받는 방법은 String s = sc.nextLine(); String s라는 변수에 sc.nextLine();을 하여 문자를 입력 받을 수 있다.
    이제 출력 할때 System.out.println(s+"??!"); s라는 변수에 저장된 값이랑 ??!를 +로 연결시켜 값을 출력한다.

8. 1998년생인 내가 태국에서는 2541년생?!

ICPC Bangkok Regional에 참가하기 위해 수완나품 국제공항에 막 도착한 팀 레드시프트 일행은 눈을 믿을 수 없었다. 공항의 대형 스크린에 올해가 2562년이라고 적혀 있던 것이었다.
불교 국가인 태국은 불멸기원(佛滅紀元), 즉 석가모니가 열반한 해를 기준으로 연도를 세는 불기를 사용한다. 반면, 우리나라는 서기 연도를 사용하고 있다. 불기 연도가 주어질 때 이를 서기 연도로 바꿔 주는 프로그램을 작성하시오.

import java.util.Scanner;

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

        System.out.println(y-543);

    }
}
  • 이 문제는 먼저 불기연도와 서기연도의 차를 구하고 불기연도를 저장하는 변수인 y에서 불기연도와 서기연도의 차이인 543을 빼서 출력하면 서기연도를 구하는 프로그램을 만들 수 있다.

9. 나머지

(A+B)%C는 ((A%C) + (B%C))%C 와 같을까?
(A×B)%C는 ((A%C) × (B%C))%C 와 같을까?
세 수 A, B, C가 주어졌을 때, 위의 네 가지 값을 구하는 프로그램을 작성하시오.

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();
        int c = sc.nextInt();
        int a1 = (a + b) % c;
        int a2 = ((a % c) + (b % c)) % c;
        int a3 = (a * b) % c;
        int a4 = ((a % c) * (b % c)) % c;
        System.out.println(a1);
        System.out.println(a2);
        System.out.println(a3);
        System.out.println(a4);
    }
}
  • 먼저 나는 세수를 변수로 선언하고, 세개의 수를 주어진 연산문제도 변수로 선언하였다. 그래서 세수의 값을 입력 받고, 각 연산들의 변수를 출력하면 문제에서 주어진 해답을 찾을 수 있다.

10. 곱셈

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

        int a = sc.nextInt();
        int b = sc.nextInt();
        int c = b/100;
        int d= (b-c*100)/10;
        int e = b-(c*100+d*10);
        int ac;
        int ad;
        int ae;
        ac=a*c;
        ad=a*d;
        ae=a*e;
        int result;
        result = ae+ad*10+ac*100;
        System.out.println(ae);
        System.out.println(ad);
        System.out.println(ac);

        System.out.println(result);
    }
}
  • 먼저 값을 입력받는 변수 a,b를 선언한다. 그리고 b는 한자리씩 a에 곱해야 하므로 한자리씩 뽑아 c,d,e에 저장했다. 만약 385를 b에 저장하면 1의 자리는 100으로 나누어 몫을 구해 c에 저장하고, 10의자리 숫자는 b에서 c100을 한 값을 빼 주면 구할 수 있다. 마지막으로 100의 자리 숫자는 c100+d10을 하면 380이라는 숫자가 나오는데 이 숫자를 b에서 빼게되면 1의 자리 숫자만 남는다. 그래서 다른 변수를 생성해 a와 곱셈을 하여 변수ac,ad,ae에 저장한다.이제 곱셈의 더하기는 한칸씩 앞으로 밀어지기때문에 10과 100을 각각ad와 ac에 곱해서 최종적으로 ae+ad10+ac*100을 연산 하면 문제를 해결할 수 있다.
profile
아자아자자

0개의 댓글