쉽게 품(아무래도 전에 풀던 문제에서 코드 그대로 사용 -> 쉬운 레벨 문제이기 때문에 내용이 어려운 것이 아니라 코드가 익숙하지 않는 것 결론은 많이 풀어야 한다)
새싹 함수 - 검증수

새싹은 다 풀었다!
문제
컴퓨터를 제조하는 회사인 KOI 전자에서는 제조하는 컴퓨터마다 6자리의 고유번호를 매긴다. 고유번호의 처음 5자리에는 00000부터 99999까지의 수 중 하나가 주어지며 6번째 자리에는 검증수가 들어간다. 검증수는 고유번호의 처음 5자리에 들어가는 5개의 숫자를 각각 제곱한 수의 합을 10으로 나눈 나머지이다.
예를 들어 고유번호의 처음 5자리의 숫자들이 04256이면, 각 숫자를 제곱한 수들의 합 0+16+4+25+36 = 81 을 10으로 나눈 나머지인 1이 검증수이다.
입력
첫째 줄에 고유번호의 처음 5자리의 숫자들이 빈칸을 사이에 두고 하나씩 주어진다.
출력
첫째 줄에 검증수를 출력한다.
예제 입력 1
0 4 2 5 6
예제 출력 1
1
import java.io.*;
import java.util.*;
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 a = Integer.parseInt(st.nextToken());
sum+=a*a;
}
System.out.println(sum%10);
}
}
총정리
gpt선생님께서 알려주셨다.
StringTokenizer:
1.StringTokenizer는 특정 구분자(delimiter)를 기준으로 문자열을 토큰(token)으로 나누는 역할을 합니다.
여러 개의 토큰이 있을 때, 각 토큰을 순차적으로 처리할 수 있습니다.
예를 들어, "1 2 3"과 같은 문자열을 공백을 기준으로 나누면 "1", "2", "3" 세 개의 토큰이 얻어집니다.
java
Copy code
StringTokenizer st = new StringTokenizer("1 2 3");
while (st.hasMoreTokens()) {
String token = st.nextToken();
// 각 토큰에 대한 처리
}
2.br.readLine():
br.readLine()은 한 줄을 통째로 읽어옵니다.
따라서 개행 문자(\n)를 포함한 한 줄 전체를 읽어오게 됩니다.
예를 들어, "1 2 3"을 한 줄로 읽으면 "1 2 3\n"과 같이 읽힐 것입니다.
java
Copy code
String s = br.readLine();
이후에 String.split() 메서드를 사용하거나 다른 방법으로 문자열을 나눌 수 있습니다.
java
Copy code
String[] tokens = s.split(" ");
// tokens 배열에 "1", "2", "3"이 저장됨
주로 여러 개의 숫자가 한 줄에 공백을 기준으로 주어지는 경우에는 StringTokenizer가 편리하게 사용될 수 있습니다. 그러나 간단한 경우에는 br.readLine()을 사용하여 문자열을 읽은 후에 String.split() 등을 활용하여 나누는 방법도 자주 사용됩니다. 두 방법 모두 상황에 맞게 선택하여 사용하면 됩니다.
char c = s.charAt()보다 String[] tokens = s.split(" ") 이게 더 좋은듯 StringIndexOutOfBoundsException 전자는 문자열 길이를 생각해서 이 오류를 신경써야 하기 때문이다.