[BaekJoon] 10430번 - 나머지 (java)
1. 문제
👉 문제 바로가기
- 조건
시간 제한 | 메모리 제한 |
---|---|
1초 | 256MB |
- 문제
(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 |
2. 풀이
2가지 입력 방식으로 결과를 출력하고자 한다.
- Scanner 클래스 사용
- BufferedReader 클래스 사용
- 1. Scanner 클래스 사용
import java.util.Scanner;
public class Main{
public static void main(String[] args){
//Scanner 객체 생성
Scanner sc = new Scanner(System.in);
//int형 변수에 입력받은 숫자를 저장
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);
sc.close();
}
}
위와같이 객체를 생성할 때, Scanner(System.in) 에서
System.in
은 입력한 값을Byte 단위
로 읽는 것을 뜻한다.
- 2. BufferedReader 클래스 사용
BufferedReader는 readLine()
메서드를 사용해 한 행을 전부 읽는다.
이를 공백단위로 분리해야 하는데, 두가지 분리 방법으로 문제를 풀어보자.
① StringTokenizer 클래스를 사용하여 분리해주는 방법
② split() 을 사용하는 방법
① 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 str = new StringTokenizer(br.readLine());
int A = Integer.parseInt(str.nextToken());
int B = Integer.parseInt(str.nextToken());
int C = Integer.parseInt(str.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);
}
}
str.nextToken()
은 한 줄로 받은 데이터를 공백 단위로 끊어문자열로 반환
하기 때문에Integer.parseInt()
을 사용해int형으로 변환
시켜준다.
② split() 을 사용
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
public class Main{
public static void main(String[] args)throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String[] str = br.readLine().split(" ");
int A = Integer.parseInt(str[0]);
int B = Integer.parseInt(str[1]);
int C = Integer.parseInt(str[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);
}
}
br.readLine() 을 통해 읽어온 문자열을
split(" ")
하여 공백 단위로 나눠준 뒤 String 배열에 순서대로 저장한다.
Integer.parseInt()
을 사용해 string 배열에 저장된 값을 각각int형으로 변환
시켜준다.
BufferedReader 클래스
에 대해 더 알아보고 싶으면 여기를 클릭하면 된다.3. Scanner VS BufferedReader 성능 비교
입력의 경우 확실히 Scanner 보다는 BufferedReader 가 빠른 것을 볼 수 있다.
관련 페이지
Leave a comment