Algorithm/baekjoon
JAVA : 백준 2475번 검증수 (BufferedReader, Scanner)
지나온
2022. 6. 12. 01:45
문제
컴퓨터를 제조하는 회사인 KOI 전자에서는 제조하는 컴퓨터마다 6자리의 고유번호를 매긴다. 고유번호의 처음 5자리에는 00000부터 99999까지의 수 중 하나가 주어지며 6번째 자리에는 검증수가 들어간다. 검증수는 고유번호의 처음 5자리에 들어가는 5개의 숫자를 각각 제곱한 수의 합을 10으로 나눈 나머지이다.
예를 들어 고유번호의 처음 5자리의 숫자들이 04256이면, 각 숫자를 제곱한 수들의 합 0+16+4+25+36 = 81 을 10으로 나눈 나머지인 1이 검증수이다.
입력
첫째 줄에 고유번호의 처음 5자리의 숫자들이 빈칸을 사이에 두고 하나씩 주어진다.
출력
첫째 줄에 검증수를 출력한다.
코드
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 sum=0;
for(int i = 0; i < 5; i++) {
int temp = Integer.parseInt(st.nextToken());
sum+=temp*temp;
}
System.out.println(sum%10);
}}
1. br
숫자 5개를 입력받아 숫자의 제곱을 모두 더해서 10으로 나눈 나머지를 구하는 문제이다.
br로 입력받아서 tokenizer으로 숫자를 나누었다. 그 값을 임시 변수 temp에 저장하여 제곱값을 sum에 더해주었다.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int result = 0;
for(int i=0; i<5; i++) {
int n = sc.nextInt();
result += n*n;
}
System.out.println(result%10);
sc.close();
}
}
2. Scanner
스캐너로 간단하게 해결할 수 있다.
Scanner와 BufferedReader의 속도, 메모리 차이를 비교해볼 수 있다.
위의 Scanner 보다 br으로 처리했을 때 메모리, 시간 모두 좋은것을 확인할 수 있다.