글 작성자: 취업중인 피터팬
728x90

https://www.acmicpc.net/problem/2475

 

2475번: 검증수

컴퓨터를 제조하는 회사인 KOI 전자에서는 제조하는 컴퓨터마다 6자리의 고유번호를 매긴다. 고유번호의 처음 5자리에는 00000부터 99999까지의 수 중 하나가 주어지며 6번째 자리에는 검증수가 들

www.acmicpc.net

 

정답

import java.util.*;
import java.io.*;

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[] num = new int[5];
        int i = 0;
        
        while(st.hasMoreTokens()){
            num[i] = Integer.parseInt(st.nextToken());
            i++;
        }
        
        System.out.println(((num[0]*num[0]) + (num[1]*num[1]) + (num[2]*num[2]) + (num[3]*num[3]) + (num[4]*num[4]))%10);
        
    }
}

굉장히 쉬운 문제여서 BufferedReader과 StringTokenizer를 사용해 속도를 개선하여 풀었습니다. 

 

BufferedReader같은 경우는 우리가 흔이 쓴는 Scanner과 같은 형식입니다. 다만 자바에서 입출력을 buffer로 인식해 속도가 굉장히 빨라지는 장점이 있습니다.(요즘은 다 웹으로 사용해서 크게 쓰이는 곳이 많지는 않습니다.)

StringTokenizer은 기본 구분자 공백, 줄바꿈, 탭 등과 같은 글자를 자동으로 구분해 주는 역할을 합니다.

hasMoreTokens() 함수로 구분자의 다음 글자가 있는지 확인 할 수 있고(있으면 true 없으면 false가 반환됩니다.) nextToken()함수로 구분자의 다음 글자를 가져올 수 있습니다.