Baekjoon_Step1

주가희·2023년 9월 25일

1. Hello World! 출력

public class Ex01 {

	public static void main(String[] args) {
		System.out.println("Hello World!");
	}
}

2. A + B

스캐너를 확인할 수 없습니다.

생성한 스캐너 객체의 이름과 받는 스캐너 이름이 달라서 에러발생!

package step1;

import java.util.Scanner;

public class Ex02 {

	public static void main(String[] args) {
		Scanner scanner1 = new Scanner(System.in);
		int num1 = scanner1.nextInt();
		Scanner scanner2 = new Scanner(System.in);
		int num2 = scanner2.nextInt();
	
		int sum = num1+num2;
		System.out.println(sum);
		
		
	}

}

이름을 수정해주면 된다

이렇게 하면 이클립스에서는 돌아가지만 백준에서는 런타임 오류가 발생한다.
찾아보니 입력 받을때 Scanner를 한번만 사용해야한다고 한다.

package step1;

import java.util.Scanner;

public class Ex02 {

	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		int num1 = scanner.nextInt();
		int num2 = scanner.nextInt();
	
		int sum = num1+num2;
		System.out.println(sum);
		
		
	}

}

Scanner를 한번만 사용하도록 수정하여 같은 결과를 얻었지만 아직 Scanner에 대하여 자세히 몰라서 원리는 이해가 가지않는다.

3. A - B

package step1;

import java.util.Scanner;

public class Ex02 {

	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		int num1 = scanner.nextInt();
		int num2 = scanner.nextInt();
	
		int sum = num1-num2;
		System.out.println(sum);
		
		
	}

}

2번 문제와 동일 사칙연산 부분만 수정

4. A X B

package step1;

import java.util.Scanner;

public class Ex02 {

	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		int num1 = scanner.nextInt();
		int num2 = scanner.nextInt();
	
		int sum = num1*num2;
		System.out.println(sum);
		
		
	}

}

5. A / B

package step1;

import java.util.Scanner;

public class Ex02 {

	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		double num1 = scanner.nextDouble();
		double num2 = scanner.nextDouble();
	
		double sum = num1/num2;
		System.out.println(sum);
		
		
	}

}

첫째 줄에 A/B를 출력한다. 실제 정답과 출력값의 절대오차 또는 상대오차가 10-9 이하이면 정답이다.

라는 조건이 있어 int 타입이 아닌 double 타입으로 수정해주었다.

6. 사칙연산

첫째 줄에 A+B, 둘째 줄에 A-B, 셋째 줄에 A*B, 넷째 줄에 A/B, 다섯째 줄에 A%B를 출력한다.

package step1;

import java.util.Scanner;

public class Ex02 {

	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		int num1 = scanner.nextInt();
		int num2 = scanner.nextInt();
	
		System.out.println(num1+num2);
		System.out.println(num1-num2);
		System.out.println(num1*num2);
		System.out.println(num1/num2);
		System.out.println(num1%num2);
				
	}

}

7. ??!

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

import java.util.Scanner;

public class Ex07 {

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

}

문자를 입력받아 id에 저장한 후 "??!"을 추가해 출력

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

서기 + 544 = 불기

package step1;

import java.util.Scanner;

public class Ex08 {

	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		int year1 = scanner.nextInt();
		int year2 = year1 - 543;
		System.out.println(year2);
		
	}

}

9. 나머지

package step1;

import java.util.Scanner;

public class Ex09 {

	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		int A, B, C;
		A = scanner.nextInt();
		B = scanner.nextInt();
		C = scanner.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);
	}

}

10. 곱셈

입력받은 수의 일의 자리, 십의 자리, 백의 자리 수를 가지고 와야하는데 charAt 같은 함수를 int타입에서도 있는지 확인해봤지만 없었다
그래서 입력받은 수의 일의 자리 수를 구하기 위해 입력받은 수를 10으로 나누고 그 몫을 또 10으로 나누어서 구하려고 하다가
10으로 나눈 나머지가 일의 자리가 아닐까 생각이 들었다
비슷한 방식으로 십의 자리, 백의 자리 숫자를 구했다

package baekjoon;

import java.util.Scanner;

public class Ex10 {

	public static void main(String[] args) {
//		System.out.println("세 자리수 입력: ");
		Scanner sc = new Scanner(System.in);
		int num1 = sc.nextInt();
//		System.out.println("두번째 세 자리수 입력");
		int num2 = sc.nextInt();
		
		System.out.println(num1 * (num2%10));
		System.out.println(num1 * ((num2/10)%10));
		System.out.println(num1 * (num2/100));
		System.out.println(num1 * num2);
	}

}

11. 꼬마 정민


import java.util.Scanner;

public class Ex11 {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int num1 = sc.nextInt();
		int num2 = sc.nextInt();
		int num3 = sc.nextInt();
		
		System.out.println(num1+num2+num3);
		
	}

}

정답은 제대로 나왔지만 런타임에러가 뜸
입력조건을 확인하면 10^12 까지의 입력값이 주어질텐데 int 타입은 10^9의 크기만큼만 표현가능해서 에러가 뜬다
int 타입을 10^18까지 입력받을 수 있는 long타입을 사용하여 풀어야 한다.

import java.util.Scanner;

public class Ex11 {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		long num1 = sc.nextLong();
		long num2 = sc.nextLong();
		long num3 = sc.nextLong();
		
		System.out.println(num1+num2+num3);
		
	}

}

12. 고양이

자바에서 몇몇 문자는 단독으로 출력할 수 없다.
대표적으로 백슬래시와 큰 따옴표가 있다.
백슬래시와 큰 따옴표를 출력하기 위해서 Escape Sequance를 써야하는데
백슬래시(\) + 문자 조합으로 쓰인다

public class Ex12 {

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


	}
}

13. 개

12번과 같은 유형의 문제

public class Ex13 {

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

}
profile
주웅

0개의 댓글