문제
(A+B)%C는 ((A%C) + (B%C))%C 와 같을까?
(A×B)%C는 ((A%C) × (B%C))%C 와 같을까?
세 수 A, B, C가 주어졌을 때, 위의 네 가지 값을 구하는 프로그램을 작성하시오.
입력
첫째 줄에 A, B, C가 순서대로 주어진다. (2 ≤ A, B, C ≤ 10000)
출력
첫째 줄에 (A+B)%C, 둘째 줄에 ((A%C) + (B%C))%C, 셋째 줄에 (A×B)%C, 넷째 줄에 ((A%C) × (B%C))%C를 출력한다.
| 예제 입력 | 예제 출력 |
| 5 8 4 | 1 1 0 0 |
⭕ 풀이
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.StringTokenizer;
import java.io.IOException;
public class Main{
public static void main(String[] args)throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
String input = br.readLine();
StringTokenizer st = new StringTokenizer(input," ");
int[] intArr = new int[3];
for(int i=0;;i++){
intArr[i] = Integer.parseInt(st.nextToken());
if(st.hasMoreTokens()==false){
break;
}
}
int a = intArr[0];
int b = intArr[1];
int c = intArr[2];
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);
bw.close();
}
}
✅ 우선 readLine() 으로 5 8 4 라인 전체를 받은 후 StringTokenizer를 활용해 분리해주었다.
이후 정수형 배열을 생성해 각 인덱스에 분리해준 값을 정수형으로 형변환시켜 넣었다.
for문 내에 종료조건식을 즉, 인덱스를 어디까지 늘려야할지 몰라 hasMoreTokens()를 사용해 if문을 작성해주었다.
이후 intArr배열의 값을 정수형 a,b,c로 담아 출력해주었다.
- for문 없이 바로 a,b,c로 nextToken을 파싱해 정수형으로 받을 수 있기도 하다.
❗ Scanner와 split이 아닌 Bufferedreader와 StringTokenizer를 활용해 푸는 습관을 들여보려 했는데
아무래도 파싱과정이나 배열에 담을경우 어떻게 멈춰야할지 등등 아직 많이 어색하다.
✅ 다른분의 풀이
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
import java.io.IOException;
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);
}
}
❗ StringTokenizer st = new StringTokenizer(br.readLine());
나의경우 String input을 선언해서 input을 분리해서 활용했는데
구분자가 없을경우 공백이 기준이고,
따로 변수를 활용할 필요없이 이렇게 br.readLine()를 바로 사용해도 되는구나
'Algorithm > Baekjoon(Java)' 카테고리의 다른 글
| [백준/JAVA] 25083 : 새싹 (0) | 2022.07.01 |
|---|---|
| [백준/JAVA] 2588 : 곱셈 ( toCharArray(), char - '0') (0) | 2022.06.30 |
| [백준/JAVA] 18108 : 1998년생인 내가 태국에서는 2541년생?! (0) | 2022.06.28 |
| [백준/JAVA] 10926 : ??! (0) | 2022.06.27 |
| [백준/JAVA] 10869 : 사칙연산 (0) | 2022.06.27 |