문제

컴퓨터를 제조하는 회사인 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으로 처리했을 때 메모리, 시간 모두 좋은것을 확인할 수 있다.