[백준/JAVA] - 입출력과 사칙연산 (6~13)
👉 백준 입출력과 사칙연산 https://www.acmicpc.net/step/1
백준 단계별로 풀어보기 1단계 -입출력과 사칙연산 (6~13) 입니다!
지난번에 이어서 6번 부터 시작하겠습니다 :)
문제 수가 많다보니 오늘은 좀 글이 길 예정입니다 😭

그럼 가볼까요?
6. 사칙연산 (10869번)

https://www.acmicpc.net/problem/10869
두 수 A, B를 입력받아 한 줄에 하나씩 덧셈, 뺄셈, 곱셈, 몫, 나머지를 출력해주면 된다.
나머지 연산은 %로 한다. 앞으로 엄청 많이 쓰일 예정이다.
Java (Scanner)
import java.util.Scanner;
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);
}
}


결과가 잘 나온다 하지만 어딘가 불편하다🤔
더 빠르게 해야한다!!
그럴때는?
-
Java (BufferedReader + StringTokenizer)
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
//입력
int A = Integer.parseInt(st.nextToken());
int B = Integer.parseInt(st.nextToken());
//출력
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. ??! (10926)

https://www.acmicpc.net/problem/10926
입력받은 문자열에 ??!을 붙여서 출력해주면 된다!
Java (Scanner)
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
//입력
String str = sc.nextLine();
//출력
System.out.println(str + "??!");
}
}
Scanner의 nextLine() 메소드는 엔터를 입력하기 전까지의 문자열을 리턴한다.
자바에서는 문자열과 문자열을 더하는 연산을 해주면
두 문자열을 붙여서 출력해준다 !!
정말 편리하다!!
-
Java (BufferedReader)
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
//입력
String str = br.readLine();
//출력
System.out.println(str + "??!");
}
}

제출 번호 67336000 - BufferedReader (128ms)
제출 번호 67335664 - Scanner (212ms)
역시 BufferedReader가 더 빠르다 !!
8. 1998년생인 내가 태국에서는 2541년생?! (18108번)

https://www.acmicpc.net/problem/18108
처음에 봤을 때는 문제가 이해되지 않았다.
그러나 생각보다 엄청 쉬운 문제였다!!
입력된 연도에서 543을 빼주기만 하면 된다.
Java (Scanner)
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc= new Scanner(System.in);
//입력
int year = sc.nextInt();
//출력
System.out.println(year - 543);
}
}
-
Java (BufferedReader)
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
//입력
int year = Integer.parseInt(br.readLine());
//출력
System.out.println(year - 543);
}
}

제출번호 67371054 - BufferedReader (128ms)
제출번호 67371046 - Scanner (204ms)
입력받은 연도에 543을 빼주기만 하면 되는 간단한 문제였다.
9. 나머지 (10430번)

https://www.acmicpc.net/problem/10430
세 수 A, B, C를 입력받아서
(A + B) % C
((A % C) + (B % C)) % C
(A * B) % C
((A % C) * (B % C)) % C
위와 같이 계산한 값을 한 줄에 하나씩 출력해주면 된다.
Java (Scanner)
import java.util.Scanner;
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));
}
}
Java (BufferedReader + StringTokenizer)
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
//입력
int A = Integer.parseInt(st.nextToken());
int B = Integer.parseInt(st.nextToken());
int C = Integer.parseInt(st.nextToken());
//출력
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));
}
}
세 수를 공백(spacebar)을 기준으로 나눠서 입력받아야 하기 때문에 StringTokenizer를 사용하였다.

제출 번호 67406047 - BufferedReader + StringTokenizer (124ms)
제출 번호 67406044 - Scanner (208ms)
10. 곱셈 (2588번)

https://www.acmicpc.net/problem/2588
지금까지 풀었던 문제들 보다 난이도가 조금 올라갔다.
입력받은 첫 번째 값과 두 번째 값의 1, 10, 100의 자리를 곱한 값을 출력해 주어야 한다.
(3)에는 472 * 5, (4)에는 472 * 8, (5)에는 472 * 3 를 출력하면 된다.
그리고 마지막 줄에는 입력받은 두 수를 곱한 값을 출력해주면 된다.
그럼 두 번째 수의 1, 10, 100의 자리 수는 어떻게 추출하면 될까?
코드를 보면서 이해해보자
Java (Scanner)
import java.util.Scanner;
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);
}
}
두 번째 수를 385라고 생각하고 풀어보자
1의 자리는 10을 나머지 연산한 값이다.
385 % 10 = 5
10의 자리는 100을 나머지 연산한 값에 10을 나눈 몫이다.
385 % 100 = 85
85 / 10 = 8
100의 자리는 100을 나눈 몫이다.
385 / 100 = 3
이렇게 나머지 연산과 몫을 잘 활용해주면 된다!
-
Java (StringTokenizer)
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
//입력
int a = Integer.parseInt(br.readLine());
int b = Integer.parseInt(br.readLine());
//출력
System.out.println(a * (b % 10));
System.out.println(a * (b % 100 / 10));
System.out.println(a * (b / 100));
System.out.println(a * b);
}
}
입력받을 떄 개행문자를 기준으로 입력받기 때문에
BufferedReader만 사용했다.
나머지는 Scanner와 같다!

제출 번호 67405957 - BufferedReader (120ms)
제출 번호 67405950 - Scanner (208ms)
11. 꼬마 정민 (11382번)

https://www.acmicpc.net/problem/11382
세 수를 입력받아 모두 더한 값을 출력해주면 되는 쉬운 문제이다.
그런데 주의할 점이 있다 !
입력 값의 범위를 잘 보자
1 <= A, B, C <= 10^12 이다.
10의 12승 (1조)인 매우 큰 값이다.
int형의 크기(unsigned int 기준 약 42억)보다 훨씬 큰 값이다.
그래서 이를 담기 위한 변수를 선언할 때 long 으로 선언하면 된다!
Java (Scanner)
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
//변수 초기화
long result = 0;
//입력 및 더한 값 저장
for(int i = 0; i < 3; i++){
result += sc.nextLong();
}
//출력
System.out.println(result);
}
}
입력과 더하는 것을 3번이나 입력하기 귀찮으니
for문으로 입력과 동시에 변수에 더해줬다.
Long으로 입력받으니 nextLong() 메소드를 사용하면 된다 :)
-
Java (BufferedReader + StringTokenizer)
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
//변수 초기화
long result = 0;
//입력 및 더한 값 저장
for(int i = 0; i < 3; i++){
result += Long.parseLong(st.nextToken());
}
//출력
System.out.println(result);
}
}
Long으로 입력받으니 parseInt 대신 parseLong을 사용하면 된다 !!

제출 번호 67406990 - BufferedReader + StringTokenizer (120ms)
제출 번호 67406952 - Scanner (216ms)
이처럼 입력 값의 범위를 잘 확인해야 하는 문제들이 있다!
그리고 변수 초기화 하는 것을 습관화 하자 !!
12. 고양이 (10171번)

https://www.acmicpc.net/problem/10171
이스케이프 문자를 적절히 활용해서 귀여운 고양이를 출력하면 된다!
하지만 역슬래쉬(\)는 그냥 출력이 불가능하다
\\ 이렇게 역슬래쉬(\) + \ 로 쓰면 출력이 가능하다!
이를 적절히 이용하면 된다.
Java
public class Main {
public static void main(String[] args) {
System.out.println("\\ /\\");
System.out.println(" ) ( ')");
System.out.println("( / )");
System.out.println(" \\(__)|");
}
}
위처럼 역슬래쉬를 출력할 때는 \\ 처럼 쓰면 된다 :)


귀여운 고양이를 보며 머리를 식혀보자🐈
13. 개 (10172번)

https://www.acmicpc.net/problem/10172
고양이 문제처럼 이스케이프 문을 잘 활용해서 강아지를 출력해주면 된다!
따옴표를 출력할 때는 \” 처럼 해주면 된다.
Java
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("||_/=\\\\__|");
}
}

위처럼 따옴표를 출력할 때는 \” 로 해주면 된다.

강아지 사진은 코딩에 이롭다🐕
마치며
이렇게 단계별로 풀어보기 - 입출력과 사칙연산 을 모두 풀어보았다!
기본 계산 문제랑 입출력 파트라 지루했을 수도 있지만,
다음 파트에는 조건문이라는 재미난 친구가 기다리고 있다 !!

긴 글 읽어주셔서 정말 감사합니다 ☺☺
즐거운 연휴가 되셨길 바랍니다 !! 다들 화이팅 🔥🔥
댓글남기기