-
[백준, 10869번] 6단계) 사칙연산 - JAVA 풀이Algorithm&BAEKJOON(백준)/1단계) 입출력과 사칙연산 2023. 4. 14. 17:51728x90
백준 [108699번] - 사칙연산
https://www.acmicpc.net/problem/10869
10869번: 사칙연산
두 자연수 A와 B가 주어진다. 이때, A+B, A-B, A*B, A/B(몫), A%B(나머지)를 출력하는 프로그램을 작성하시오.
www.acmicpc.net
# 문제 해설
믄제 해설 이전 단계에서 정리한 연산자(Operator)에 대한 문제로,
각 조건에 맞는 연산자를 사용해 계산을 진행하면 된다.
데이터 타입 설정을 위한 출력 예제 확인 또한 데이터 타입 설정을 위해 출력 결과를 확인하는 습관을 기르는 것이 좋다.
이때 덧셈, 뺄셈, 곱하기, 나머지의 경우는 실수가 출력되는 경우가 없기에 이를 제외하고 '나눗셈'을 주의 깊게 확인한다.
* 결론적으로 이번 문제에서는 모두 정수로 출력되는 것을 확인하면 된다.
* Java 연산자(Operator)?
더보기- Operator
: 프로그램 내에서 데이터를 처리해 결과를 도출하는 것을 연산(Operation)이라 하고,
이러한 연산에 사용되는 기호를 연산자(Operator)라고 한다. (연산되는 데이터는 피연산자(Operand)라 한다.)
연산자는 ① 증감 연산자(increment and decrement operator), ② 산술 연산자(arithmetic operator), ③ 시프트 연산자(shift operator), ④ 비교 연산자(comparison operator), ⑤ 비트 연산자(bit operator), ⑥ 논리 연산자(logical operator), ⑦ 조건(삼항) 연산자(ternary operator), ⑧ 대입 연산자(aassignment operator)가 있으며,
우선 순위 또한 ① > ② > ③ > ④ > ⑤ > ⑥ > ⑦ > ⑧ 순서이다. (특수한 경우를 제외하고)
이때, 해당 1단계) 입출력계산 에서는'② 산술 연산자(arithmetic operator)'를 활용하므로, 이에 해당하는 종류를 살펴보겠다.
+ 왼쪽의 피연산자에 오른쪽의 피연산자를 더함. ( A + B , A에 B를 더함 ) - 왼쪽의 피연산자에서 오른쪽의 피연산자를 뺌. ( A - B, A에 B를 뺌 ) * 왼쪽의 피연산자에 오른쪽의 피연산자를 곱함. ( A * B, A에 B를 곱함 ) / 왼쪽의 피연산자를 오른쪽의 피연산자로 나눔. ( A / B, A에 B를 나눔 ) % 왼쪽의 피연산자를 오른쪽의 피연산자로 나눈 후, 그 나머지를 반환함. ( A % B, A에 B를 나누고 남은 나머지 반환 ) [ 참고 및 추가 자료 : TCP SCOOL - 연산자(operator) ]
위의 연산자 정리 자료는 이전 포스팅에서도 확인할 수 있다.
2023.04.13 - [Algorithm&BAEKJOON(백준)/1단계) 입출력과 사칙연산] - [1008번] 5단계) A/B - JAVA 풀이
[1008번] 5단계) A/B - JAVA 풀이
백준 [1008번] - A/B https://www.acmicpc.net/problem/1008 1008번: A/B 두 정수 A와 B를 입력받은 다음, A/B를 출력하는 프로그램을 작성하시오. www.acmicpc.net # 문제 해설 A와 B를 입력받아 A/B를 하여 결과를 내는
01-study-for-me.tistory.com
이번에 사용할 방법 또한,
- Scanner
- BufferedReader
이전 문제와 동일한 방법으로 풀이한다.
또한, *참고 블로그를 통해 출력 방식(StringBuilder / BufferedWriter/StringBuilder)의 변경 또한 확인하였다.
( 앞선 포스팅인 [백준, 2557번] 1단계) Hello World - JAVA 풀이에서도 해당 블로그를 참고하였다. )
[백준, 2557번] 1단계) Hello World - JAVA 풀이
* 이러니 저러니 해도 직접 구르는게 최고! 코딩 테스트, 알고리즘, CS... 맨날 생각만 하고 지나가는 하루였기에, 차근차근 조금씩이라도 수행하고 기록을 남겨보려 한다. 백준 [2557번] - Hello World
01-study-for-me.tistory.com
# 풀이 - Scanner
* Scanner
: 값을 입력받기 위한 클래스.
//데이터를 입력받기 위한 클래스 import java.util.Scanner; public class Main { public static void main(String[] args) { //선언 Scanner scan = new Scanner(System.in); //출력 결과가 정수형이므로, int 또는 long 선언 int A = scan.nextInt(); int B = scan.nextInt(); //입력되는 숫자 범위를 지정해줄 수 있다. //if(0<A && B<10) { 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 사용 후 close() scan.close(); } }
* scanner의 close()
더보기scanner의 사용 이후, close()로 닫아주는 것을 권장한다. (닫지 않는다고 에러가 나는건 아니니까 ...)
Scanner is never closed. 경고 위처럼 "'Scanner명' is never closed." 라는 경고가 발생하기에 사용이 다 끝난 Scanner는 close하여 메모리 누수(memory leak)를 방지하자.
* 메모리 누수(Memory Leak) 관련해서는 내용이 길어지기에, 참고 사이트를 함께 남겨놓고자 한다.
[ https://dzone.com/articles/memory-leak-andjava-code ]
Memory Leaks and Java Code - DZone
dzone.com
# 추가 풀이 (1) - BufferReader
* BufferReader
: Scanner와 유사한 기능 / 버퍼 사용, 속도에 있어 우위
총 2가지의 분리 방법을 사용해 문제를 해결하고자 한다.
- StringTokenizer
- Split()
방법1. StringTokenizer 사용하기
//BufferedReader를 사용하기 위해 import 한다. 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 read = new BufferedReader(new InputStreamReader(System.in)); // (1). String 생성 후 작업하기 String text = read.readLine(); //StringTokenizer - 문자열을 구분자로 쪼개어 저장한다. (토큰(Token) 형태로 저장) StringTokenizer str = new StringTokenizer(text," "); // *** tip. String 선언 없이 사용 가능하다. (15, 18줄 해당) //StringTokenizer st = new StringTokenizer(read.readLine()," "); //int int a = Integer.parseInt(str.nextToken()); int b = Integer.parseInt(str.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); } }
방법2. split() 사용하기
//BufferedReader를 사용하기 위해 import 한다. 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 read = new BufferedReader(new InputStreamReader(System.in)); //split()을 사용해 한글자씩으로 쪼갬. String[] str = read.readLine().split(" "); //문자(문자열) 형태로 출력되기에 int로 변환한다. int a = Integer.parseInt(str[0]); int b = Integer.parseInt(str[1]); 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); } }
*참고 블로그를 통해 출력 방식(StringBuilder / BufferedWriter/StringBuilder) 변경
[백준] 10869번 : 사칙연산 - JAVA [자바]
https://www.acmicpc.net/problem/10869 10869번: 사칙연산 두 자연수 A와 B가 주어진다. 이때, A+B, A-B, A*B, A/B(몫), A%B(나머지)를 출력하는 프로그램을 작성하시오. www.acmicpc.net 문제 매우 간단한 문제다! ※ 주
st-lab.tistory.com
앞서 풀이한,
2023.04.12 - [Algorithm&BAEKJOON(백준)/1단계) 입출력과 사칙연산] - [2557번] 1단계) Hello World - JAVA 풀이
[백준, 2557번] 1단계) Hello World - JAVA 풀이
* 이러니 저러니 해도 직접 구르는게 최고! 코딩 테스트, 알고리즘, CS... 맨날 생각만 하고 지나가는 하루였기에, 차근차근 조금씩이라도 수행하고 기록을 남겨보려 한다. 백준 [2557번] - Hello World
01-study-for-me.tistory.com
위의 1번 문제에서 해당 블로그를 참고해 풀이를 추가한 기록이 있다.
728x90'Algorithm&BAEKJOON(백준) > 1단계) 입출력과 사칙연산' 카테고리의 다른 글
[백준, 1008번] 5단계) A/B - JAVA 풀이 (1) 2023.04.13 [백준, 10998번] 4단계) A×B - JAVA 풀이 (0) 2023.04.13 [백준, 1001번] 3단계) A-B - JAVA 풀이 (0) 2023.04.13 [백준, 1000번] 2단계) A+B - JAVA 풀이 (0) 2023.04.12 [백준, 2557번] 1단계) Hello World - JAVA 풀이 (0) 2023.04.12