본문 바로가기

백준

백준 닷컴 단계 별로 풀어보기 1단계

1단계 Hello World

  • Hello World!를 출력하시오.
public class Step_01 {
	public static void main(String[] args) {
		System.out.println("Hello World!");
	}
}

A.

  • syso의 기본적인 사용법을 물어보는 문제

2단계 A+B

  • 두 정수 A와 B를 입력 받은 다음, A+B를 출력하는 프로그램을 작성하시오.
import java.util.Scanner;

public class Step_02 {
	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		int a, b;
		
		a = scan.nextInt();
		b = scan.nextInt();
		System.out.println(a+b);
	}
}

A.

  • 스캐너의 활용법을 물어보는 문제
  • 스캐너 변수를 선언하고 입력 받은 값을 저장해둔다.
  • 정수와 빈칸의 연속으로 주어진 입력 값을 int단위로 새로 저장하여 syso로 출력할 수 있다.

3단계 A-B

  • 두 정수 A와 B를 입력받은 다음, A-B를 출력하는 프로그램을 작성하시오.
import java.util.Scanner;

public class Step_03 {
	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		int a, b;
		
		a = scan.nextInt();
		b = scan.nextInt();
		System.out.println(a-b);
	}
}

A.

  • 2단계와 같은 방식으로 진행 사칙연산만 바꿔주면 가능하다.

4단계 A×B

  • 두 정수 A와 B를 입력받은 다음, A×B를 출력하는 프로그램을 작성하시오.
import java.util.Scanner;

public class Step_04 {
	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		int a, b;
		
		a = scan.nextInt();
		b = scan.nextInt();
		System.out.println(a*b);
	}
}

A.

  • 2단계와 같은 방식으로 진행 사칙연산만 바꿔주면 가능하다.

5단계 A/B

  • 두 정수 A와 B를 입력받은 다음, A/B를 출력하는 프로그램을 작성하시오.
  • 첫째 줄에 A/B를 출력한다. 실제 정답과 출력값의 절대오차 또는 상대오차가 10-9 이하이면 정답이다.
import java.util.Scanner;

public class Step_05 {
	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		int a, b;
		
		a = scan.nextInt();
		b = scan.nextInt();
		System.out.println((double)a/b);
	}
}

A.

  • 2단계와 같은 방식으로 진행한다.
  • 출력값의 조건으로 오차가 소수점 9째 자리까지 표시되어야 하기 때문에 실수 변수인 double로 변환을 시켜준다. 혹은 변수를 double로 선언한다.

6단계 사칙연산

  • 두 자연수 A와 B가 주어진다. 이때, A+B, A-B, A*B, A/B(몫), A%B(나머지)를 출력하는 프로그램을 작성하시오.
  • 첫째 줄에 A+B, 둘째 줄에 A-B, 셋째 줄에 A*B, 넷째 줄에 A/B, 다섯째 줄에 A%B를 출력한다.
import java.util.Scanner;

public class Step_06 {
	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		int a, b;
		
		a = scan.nextInt();
		b = scan.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);
	}
}

A.

  • 2단계와 마찬가지로 syso에 연산을 적고 결과를 출력한다.

7단계 ??!

  • 첫째 줄에 준하가 가입하려고 하는 사이트에 이미 존재하는 아이디가 주어진다. 아이디는 알파벳 소문자로만 이루어져 있으며, 길이는 50자를 넘지 않는다.
  • 첫째 줄에 준하의 놀람을 출력한다. 놀람은 아이디 뒤에 ??!를 붙여서 나타낸다.
import java.util.Scanner;

public class Step_07 {
	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		String id;
		
		id=scan.next();
		System.out.println(id+"??!");
	}
}

A.

  • id를 String으로 변수 선언하여 받는다. id는 숫자가 아니기 때문에 scan.next로 빈칸까지의 값을 가져온다.

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

  • 서기 연도를 알아보고 싶은 불기 연도 y가 주어진다. (1000 ≤ y ≤ 3000)
  • 불기 연도를 서기 연도로 변환한 결과를 출력한다.
import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		int num;
		
		num=scan.nextInt();
		System.out.println(num - 543);
	}
}

A.

  • 서기 연도는 불기 연도보다 543년 더 낮기 때문에 불기 -543을 하여 서기 연도를 출력할 수 있다.

9단계 나머지

  • 첫째 줄에 A, B, C가 순서대로 주어진다. (2 ≤ A, B, C ≤ 10000)
  • 첫째 줄에 (A+B)%C, 둘째 줄에 ((A%C) + (B%C))%C, 셋째 줄에 (A×B)%C, 넷째 줄에 ((A%C) × (B%C))%C를 출력한다.
import java.util.Scanner;

public class Step_08 {
	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		int a, b, c;
		
		a=scan.nextInt();
		b=scan.nextInt();
		c=scan.nextInt();
		System.out.println((a+b)%c);
		System.out.println(((a%c)+(b%c))%c);
		System.out.println((a*b)%c);
		System.out.println(((a%c)*(b%c))%c);
	}
}

A.

  • int를 받아서 해당하는 결과를 syso에 넣고 출력한다.

10단계 곱셈

  • (세 자리 수) × (세 자리 수)는 다음과 같은 과정을 통하여 이루어진다.
  • (1)과 (2)위치에 들어갈 세 자리 자연수가 주어질 때 (3), (4), (5), (6)위치에 들어갈 값을 구하는 프로그램을 작성하시오.

import java.util.Scanner;

public class Step_09 {
	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		int num1;
		int num2;
		int num2_1;
		int num2_10;
		int num2_100;
				
		num1=scan.nextInt();
		num2=scan.nextInt();
		num2_1=num2%10;
		num2_10=(num2%100)/10;
		num2_100=num2/100;
		
		System.out.println(num1*num2_1);
		System.out.println(num1*num2_10);
		System.out.println(num1*num2_100);
		System.out.println(num1*num2);
	}
}

A.

  • 자연수 둘을 int로 받아온다.
  • 1의 자리의 수는 10으로 나눈 수의 나머지 계산으로 구한다.
  • 10의 자리의 수는 100으로 나눈 나머지를 10으로 나누면 몫이 나오는 것으로 구한다.
  • 100의 자리는 100으로 나누면 몫이 나오는 것으로 구한다.
  • 1번의 자연수와 1의 자리, 10의 자리 100의 자리 숫자의 곱을 각각 출력하고 1과 2의 곱을 출력한다.

11단계 꼬마 정민

  • 첫 번째 줄에 A, B, C (1 ≤ A, B, C ≤ 1012)이 공백을 사이에 두고 주어진다.
  • A+B+C의 값을 출력한다.
import java.util.Scanner;

public class Step_10 {
	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		long a, b, c;

				
		a=scan.nextLong();
		b=scan.nextLong();
		c=scan.nextLong();
		
		System.out.println(a+b+c);
	}
}

A.

  • 10의 12승의 정수는 long을 통해서 저장할 수 있기 때문에 변수로 long을 선언하는 유의점이 있다.

12단계 고양이

  • 고양이를 출력한다.
import java.util.Scanner;

public class Step_11 {
	public static void main(String[] args) {
		System.out.println("\\\\    /\\\\");
		System.out.println(" )  ( ')");
		System.out.println("(  /  )");
		System.out.println(" \\\\(__)|");
	}

A.

  • 이스케이프 문자를 이용하여 \를 출력할 수 있다.

13단계 개

  • 개를 출력한다.
import java.util.Scanner;

public class Step_12 {
	public static void main(String[] args) {
		System.out.println("|\\\\_/|");
		System.out.println("|q p|   /}");
		System.out.println("( 0 )\\"\\"\\"\\\\");
		System.out.println("|\\"^\\"`    |");
		System.out.println("||_/=\\\\\\\\__|");
	}
}

A.

  • 이스케이프 문자를 이용하여 \, “를 출력할 수 있다.