PROBLEM SOLVING

[백준] 검증수

sooindev 2025. 4. 29. 10:57
728x90

문제


컴퓨터를 제조하는 회사인 KOI 전자에서는 제조하는 컴퓨터마다 6자리의 고유번호를 매긴다. 고유번호의 처음 5자리에는 00000부터 99999까지의 수 중 하나가 주어지며 6번째 자리에는 검증수가 들어간다. 검증수는 고유번호의 처음 5자리에 들어가는 5개의 숫자를 각각 제곱한 수의 합을 10으로 나눈 나머지이다.

예를 들어 고유번호의 처음 5자리의 숫자들이 04256이면, 각 숫자를 제곱한 수들의 합 0+16+4+25+36 = 8110으로 나눈 나머지인 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;

        // 5개의 숫자를 입력받아 각각 제곱한 후 합산
        for (int i = 0; i < 5; i++) {
            int num = Integer.parseInt(st.nextToken());
            sum += num * num;
        }

        // 합계를 10으로 나눈 나머지를 출력
        int verificationNumber = sum % 10;
        System.out.println(verificationNumber);

        br.close();
    }
}

전체코드이다.

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

맨 처음은 BufferedReader를 사용하여 입력을 받는다.

 

그리고 StringTokenizer를 사용했다.

StringTokenizer를 사용하여 풀면 매우 쉽게 접근 가능했다.

StringTokenizer st = new StringTokenizer(br.readLine());

StringTokenizer를 이용해 공백으로 구분된 5개의 숫자를 분리한다.
이 부분이 해당 문제의 핵심이다.

// 5개의 숫자를 입력받아 각각 제곱한 후 합산
for (int i = 0; i < 5; i++) {
    int num = Integer.parseInt(st.nextToken());
    sum += num * num;
}

그리고 5개의 숫자를 각각 입력받아서 제곱한 후 합산 변수인 sum에 더해준다.

// 합계를 10으로 나눈 나머지를 출력
int verificationNumber = sum % 10;
System.out.println(verificationNumber);

마지막으로 sum10으로 나누고, 출력해준다.

 

이 문제는 내가 StringTokenizer에 대한 접근법이 아직 어색하여 쉽게 풀지 못하였다.
StringTokenizer는 앞서 여러 문제에서도 사용하였지만, 쉽게 익혀지지가 않았다.
StringTokenizer에 대해 더 공부해봐야겠다.