728x90
문제
컴퓨터를 제조하는 회사인 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;
// 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);
마지막으로 sum
을 10
으로 나누고, 출력해준다.
이 문제는 내가 StringTokenizer
에 대한 접근법이 아직 어색하여 쉽게 풀지 못하였다.StringTokenizer
는 앞서 여러 문제에서도 사용하였지만, 쉽게 익혀지지가 않았다.StringTokenizer
에 대해 더 공부해봐야겠다.
'PROBLEM SOLVING' 카테고리의 다른 글
[백준] A + B - C (1) | 2025.05.02 |
---|---|
[백준] X보다 작은 수 (0) | 2025.04.29 |
[백준] 숫자의 합 (0) | 2025.04.29 |
[백준] 수 정렬하기 2 (1) | 2025.04.24 |
[백준] 최댓값 (0) | 2025.04.23 |