https://www.acmicpc.net/problem/10430
- 문제
이 문제는 여타 나왔던 문제들과 다르게 초반에 코드가 동작할 수 있게 하는 식을 만들고 시작해야한다.
주어진 문제는 (2 ≤ A, B, C ≤ 10000) 일때,
(A+B)%C=((A%C)+(B%C))%C
(AxB)%C=((A%C)x(B%C))%C
인지를 묻고 있다.
가령 예를들어, A,B,C가 각각 5,8,4 일경우 (정수형)
(A+B)%C=(5+8)%4=1
((A%C)+(B%C))%C=((5%4)+(8%4))%4=1%4=1
즉, (A+B)%C=((A%C)+(B%C))%C 가 성립한다.
출력은
1
1
0
0
으로 출력해야하므로, 줄바꿈도 어쩌면 필요할지도 모른다.
코드를 짜기전에 필요한 연산자를 먼저 적어보자
(A+B)%C=((A%C)+(B%C))%C
(AxB)%C=((A%C)x(B%C))%C
은 아래와 같이 바뀐다.
(A+B) %C
(A%C + B%C)%C
(A*B)%C
(A%C * B%C)%C
- 코드1
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int A = in.nextInt();
int B = in.nextInt();
int C = in.nextInt();
in.close();
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방식이다. 입력스트림에 필요한 System.in 그리고 닫아주는 in.close();를 써준뒤 시스템출력을 해주면 된다.
- 결과
- 코드2
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());
int C = Integer.parseInt(st.nextToken());
StringBuilder sb=new StringBuilder();
sb.append( (A+B)%C );
sb.append('\n');
sb.append( (A%C + B%C)%C );
sb.append('\n');
sb.append( (A*B)%C );
sb.append('\n');
sb.append( (A%C * B%C)%C );
System.out.println(sb);
}
}
역시 익숙한 앞서 사용한 BufferedReader+StringTokenizer의 사용방법이다.
- 결과
- 코드3
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
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.nextInt());
int B=Integer.parseInt(st.nextInt());
int C=Integer.parseInt(st.nextInt());
BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(System.out));
bw.write( ((A+B)%C) + "\n" );
bw.write( ((A%C + B%C)%C) + "\n" );
bw.write( ((A*B)%C) + "\n" );
bw.write( ((A%C * B%C)%C) + "\n" );
bw.flush();
bw.close();
}
}
기본적인 문법사용(이전 포스트에서 다뤘던 Buffer과 StringTokenizer의 사용법참고)의 변함은 없다. 다만, 같이 써봤을 뿐이다.
- 결과
- 코드1,2,3 속도비교
'Computer Science > BAEKJOON JAVA Practice' 카테고리의 다른 글
[백준]1330번: 두 수 비교하기 (0) | 2021.12.26 |
---|---|
[백준]2588번: 곱셈 (0) | 2021.12.25 |
[백준]10869번: 사칙연산(용어정리) (0) | 2021.12.24 |
[백준]10098번: AxB (0) | 2021.12.22 |
[백준]1001번: A-B (0) | 2021.12.22 |