Q1. Hello World!를 출력하시오.
입력 : 없음
출력 : Hello World!
✅ 백준 2557번 바로가
public class Main {
public static void main(String[] args){
System.out.println("Hello World!");
}
}
Q2. 두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오.
입력 : A,B
출력 : A+B
✅ 백준 1000번 바로가기
import java.util.*;
public 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);
}
}
Scanner를 이용하여 정수 A,B를 받아와 덧셈 연산을 하면 된다.
Q3. 두 정수 A와 B를 입력받은 다음, A-B를 출력하는 프로그램을 작성하시오.
입력 : A,B
출력 : A-B
✅ 백준 1001번 바로가기
import java.util.*;
public 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);
}
}
Scanner를 이용하여 정수 A,B를 받아와 뺄셈 연산을 하면 된다.
Q4. 두 정수 A와 B를 입력받은 다음, A×B를 출력하는 프로그램을 작성하시오.
입력 : A,B
출력 : A×B
✅ 백준 10998번 바로가기
import java.util.*;
public 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);
}
}
Scanner를 이용하여 정수 A,B를 받아와 곱셈 연산을 하면 된다.
Q5. 두 정수 A와 B를 입력받은 다음, A/B를 출력하는 프로그램을 작성하시오.
입력 : A,B
출력 : A/B
✔ 실제 정답과 출력값의 절대오차 또는 상대오차가 10의 -9제곱 이하이면 정답이다.
✅ 백준 1008번 바로가기
import java.util.*;
public class Main {
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int A = sc.nextInt();
int B = sc.nextInt();
double R = (double)A/B;
System.out.println(R);
}
}
Scanner를 이용하여 정수 A,B를 받아와 나누기 연산을 하면 된다. 문제에서 절대오차 또는 상대오차가 10의 -9제곱 이하라고 했으니 double로 형변환 하여 결과 값을 출력해야한다.
Q6. 두 자연수 A와 B가 주어진다. 이때, A+B, A-B, A*B, A/B(몫), A%B(나머지)를 출력하는 프로그램을 작성하시오.
입력 : A,B
출력 : 첫째 줄에 A+B, 둘째 줄에 A-B, 셋째 줄에 A*B, 넷째 줄에 A/B, 다섯째 줄에 A%B를 출력한다.
✅ 백준 10869번 바로가기
import java.util.*;
public 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);
System.out.println(A-B);
System.out.println(A*B);
System.out.println(A/B);
System.out.println(A%B);
}
}
Scanner를 이용하여 정수 A,B를 받아와 모든 사칙연산을 하면 된다.
Q7. 준하는 사이트에 회원가입을 하다가 joonas라는 아이디가 이미 존재하는 것을 보고 놀랐다. 준하는 놀람을 ??!로 표현한다. 준하가 가입하려고 하는 사이트에 이미 존재하는 아이디가 주어졌을 때, 놀람을 표현하는 프로그램을 작성하시오.
입력 : 첫째 줄에 준하가 가입하려고 하는 사이트에 이미 존재하는 아이디가 주어진다. 아이디는 알파벳 소문자로만 이루어져 있으며, 길이는 50자를 넘지 않는다.
출력 : 첫째 줄에 준하의 놀람을 출력한다. 놀람은 아이디 뒤에 ??!를 붙여서 나타낸다.
✅ 백준 10926번 바로가기
import java.util.*;
public class Main {
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
String id = sc.nextLine();
System.out.println(id+"??!");
}
}
Scanner를 이용하여 준하의 id(문자열)을 받아온 다음 println()를 이용하여 ??!를 붙혀 출력하면 된다.
✔️자바에서 println()은 문자열끼리 연결이 가능하다.
Q8. ICPC Bangkok Regional에 참가하기 위해 수완나품 국제공항에 막 도착한 팀 레드시프트 일행은 눈을 믿을 수 없었다. 공항의 대형 스크린에 올해가 2562년이라고 적혀 있던 것이었다. 불교 국가인 태국은 불멸기원, 즉 석가모니가 열반한 해를 기준으로 연도를 세는 불기를 사용한다. 반면, 우리나라는 서기 연도를 사용하고 있다. 불기 연도가 주어질때 이를 서기 연도로 바꿔 주는 프로그램을 작성하시오.
입력 : 서기 연도를 알아보고 싶은 불기 연도 y가 주어진다.
출력 : 불기 연도를 서기 연도로 변환한 결과를 출력한다.
✅ 백준 18108번 바로가기
import java.util.*;
public class Main {
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int y = sc.nextInt();
int result = y-543;
System.out.println(result);
}
}
Scanner를 이용하여 불기 연도를 정수형으로 받아와 result에 서기 연도 값을 저장한 후 출력한다.
✔️ 윤년 : 연도 - 543
Q9. 동혁이는 오래된 창고를 뒤지다가 낡은 체스판과 피스를 발견했다. 체스판의 먼지를 털어내고 걸레로 닦으니 그럭저럭 쓸만한 체스판이 되었다. 하지만, 검정색 피스는 모두 있었으나, 흰색 피스는 개수가 올바르지 않았다. 체스는 총 16개의 피스를 사용하며, 킹 1개, 퀸 1개, 룩 2개, 비숍 2개, 나이트 2개, 폰 8개로 구성되어 있다. 동혁이가 발견한 흰색 피스의 개수가 주어졌을 때, 몇 개를 더하거나 빼야 올바른 세트가 되는지 구하는 프로그램을 작성하시오.
입력 : 첫째 줄에 동혁이가 찾은 흰색 킹, 퀸, 룩, 비숍, 나이트, 폰의 개수가 주어진다. 이 값은 0보다 크거나 같고 10보다 작거나 같은 정수이다.
출력 : 첫째 줄에 입력에서 주어진 순서대로 몇 개의 피스를 더하거나 빼야 되는지를 출력한다. 만약 수가 양수라면 동혁이는 그 개수 만큼 피스를 더해야 하는 것이고, 음수라면 제거해야 하는 것이다.
✅ 백준 3003번 바로가기
import java.util.*;
public class Main {
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int king=1, queen=1, rook=2, bishop=2, knight=2, pawn=8;
king = king - sc.nextInt();
queen = queen - sc.nextInt();
rook = rook - sc.nextInt();
bishop = bishop - sc.nextInt();
knight = knight - sc.nextInt();
pawn = pawn - sc.nextInt();
System.out.println(king + " " + queen + " " + rook + " " + bishop + " " + knight + " " + pawn);
}
}
문제를 보면 각 체스말의 개수는 고정되어있다. 입력 값으로 현재 동혁이가 가지고 있는 말의 개수를 받아와 그 차를 구하면 되는 문제이다. 체스말을 종류별로 변수로 선언하여 초기값을 정상적인 체스말 값으로 초기화하고 입력 받은 값을 각 해당 체스말에서 빼면 된다.
✔️체스말 변수를 일일이 선언하지말고 배열을 이용하는 방법도 있다.
import java.util.*;
public class Main {
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int chess[] = {1,1,2,2,2,8};
int fChess[] = new int[chess.length];
for(int i=0; i<fChess.length; i++){
fChess[i] = sc.nextInt();
}
for(int i=0; i<chess.length; i++){
System.out.printf("%d ", chess[i]-fChess[i]);
}
}
}
Q10. (A+B)%C는 ((A%C)+(B%C))%C와 같을까? (AxB)%C는 ((A%C)x(B%C))%C와 같을까? 세 수 A,B,C가 주어졌을 때, 위의 네 가지 값을 구하는 프로그램을 작성하시오.
입력 : 첫째 줄에 A,B,C가 순서대로 주어진다.
출력 : 첫째 줄에 (A+B)%C, 둘째 줄에 ((A%C)+(B%C))%C, 셋째 줄에 (AxB)%C, 넷째 줄에 ((A%C)x(B%C))%C를 출력한다.
✅ 백준 10430번 바로가기
import java.util.*;
public 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();
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);
}
}
Scanner를 이용하여 정수 A,B,C를 받아와 문제에서 주어진 식에 대입하여 출력하면 된다.
Q11. (세 자리 수 ) x (세 자리 수)는 다음과 같은 과정을 통하여 이루어진다.
(1)과 (2)위치에 들어갈 세 자리 자연수가 주어질 때, (3), (4), (5), (6)위치에 들어갈 값을 구하는 프로그램을 작성하시오.
입력 : 첫째 줄에 (1)의 위치에 들어갈 세 자리 자연수가, 둘째 줄에 (2)의 위치에 들어갈 세자리 자연수가 주어진다.
출력 : 첫째 줄부터 넷째 줄까지 차례대로 (3), (4), (5), (6)에 들어갈 값을 출력한다.
✅ 백준 2588번 바로가기
일단 (3)에 위치할 값은 정수A * 정수B의 1의자리 숫자이다. (4)에 위치할 값은 정수A * 정수B의 10의자리 숫자이다. 마찬가지로 (5)에 위치할 값은 정수A * 정수B의 100의자리 숫자이다. (6)에 위치할 값은 정수 A * B 값이다.
✅ 문제 풀이의 핵심은 정수B의 1의자리, 10의자리, 100의자리를 구하는 것이다.
import java.util.*;
public 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 % 10));
System.out.println(A * (B % 100/10));
System.out.println(A * (B / 100):
System.out.println(A * B);
}
}
첫번째 풀이 방법은 메소드를 사용하지 않고 단순 수식 풀이이다. B의 1의자리는 B를 10으로 나눈 나머지로 구할 수 있다. 10의자리는 B를 100으로 나눈 나머지를 10으로 나누면 되고, 100의자리는 그냥 B를 100으로 나누면 된다.
import java.util.*;
public class Main {
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int A = sc.nextInt();
String B = sc.next();
System.out.println(A*(B.charAt(2)-'0'));
System.out.println(A*(B.charAt(1)-'0'));
System.out.println(A*(B.charAt(0)-'0'));
System.out.println(A*Integer.parseInt(B));
}
}
두번째 풀이 방법은 charAt()메소드를 사용하는 방법이다. Scanner를 이용하여 정수 A와 문자열 B를 받아온다. 여기서 B를 정수가 아닌 문자열로 받아오는 이유는 charAt() 메소드를 이용하기 위함인데, charAt()메소드는 String 타입으로 받은 문자열을 char 타입으로 한 글자만 받는 메소드이다. 예를 들어 String str = "seongil"이 저장되어있을 때 문자열을 문자들이 모인 배열이라고 보고 인덱스를 참조하여 해당 문자를 반환하는 것이다. 이때 반환되는 값은 아스키코드값인 문자이다. String a = 123;가 있다고 하면 int r = a.charAt(0)은 숫자1이 아닌 문자'1'의 아스키코드 값이다. 즉, a에는 49가 저장되는 것이다. 우리가 원하고자 하는 숫자는 어떻게 얻어와야 할까? 바로 -'0'을 해주면 된다. '0'의 아스키코드 값은 '48'이다. int r = a.charAt(0)-'0'을 해석해 보면 '49'-'48'='1' 따라서 우리가 원하는 값을 알 수 있는 것이다. 그래서 charAt() 메소드 뒤에 -'0'을 해준 것이다. 마지막 출력은 A*B 값을 출력하면 되므로 우리가 입력받은 문자열 B를 숫자로 변환해주는 Integer.parseInt()메소드를 통해 문자열을 int형으로 변환해주어 A와 곱해준 값을 출력하면 된다.
Q12. 아래 예제와 같이 고양이를 출력하시오.
입력 : 없음
출력 : 고양이를 출력한다.
✅ 백준 10171번 바로가기
import java.util.*;
public class Main {
public static void main(String[] args){
System.out.println("\\ /\\");
System.out.println(" ) ( \')");
System.out.println("( / )");
System.out.println(" \\(__)|");
}
}
자바에서 ", ', \를 표현하기 위해서는 앞에 \를 하나 더 붙혀주면 된다.
Q13. 아래 예제와 같이 개를 출력하시오.
입력 : 없음
출력 : 개를 출력한다.
✅ 백준 10172번 바로가기
import java.util.*;
public class Main {
public static void main(String[] args){
System.out.println("|\\_/|");
System.out.println("|q p| /}");
System.out.println("( 0 )\"\"\"\\");
System.out.println("|\"^\"` |");
System.out.println("||_/=\\\\__|");
}
}
자바에서 ", ', \를 표현하기 위해서는 앞에 \를 하나 더 붙혀주면 된다.
Q14. 아래 예제와 같이 새싹을 출력하시오.
입력 : 없음
출력 : 새싹을 출력한다.
✅ 백준 25083번 바로가기
import java.util.*;
public class Main {
public static void main(String[] args){
System.out.println(" ,r\'\"7");
System.out.println("r`-_ ,\' ,/");
System.out.println(" \\. \". L_r\'");
System.out.println(" `~\\/");
System.out.println(" |");
System.out.println(" |");
}
}
자바에서 ", ', \를 표현하기 위해서는 앞에 \를 하나 더 붙혀주면 된다.
'백준 문제풀이 > 단계별 문제 풀이 (Basic-Java)' 카테고리의 다른 글
05. 문자열 (0) | 2023.03.06 |
---|---|
04. 1차원 배열 (0) | 2023.03.01 |
03. 반복문 (0) | 2023.02.25 |
02. 조건문 (0) | 2023.02.15 |