https://www.acmicpc.net/problem/2475
# 2475 : 검증수
컴퓨터를 제조하는 회사인 KOI 전자에서는 제조하는 컴퓨터마다 6자리의 고유번호를 매긴다.
고유번호의 처음 5자리에는 00000부터 99999까지의 수 중 하나가 주어지며 6번째 자리에는 검증수가 들어간다.
검증수는 고유번호의 처음 5자리에 들어가는 5개의 숫자를 각각 제곱한 수의 합을 10으로 나눈 나머지이다.
예를 들어 고유번호의 처음 5자리의 숫자들이 04256이면,
각 숫자를 제곱한 수들의 합 0+16+4+25+36 = 81 을 10으로 나눈 나머지인 1이 검증수이다.
입력
첫째 줄에 고유번호의 처음 5자리의 숫자들이 빈칸을 사이에 두고 하나씩 주어진다.
출력
첫째 줄에 검증수를 출력한다.
풀이 코드 - 1
num = map(int, input().split())
result = 0
for i in num:
result += i ** 2
print(result % 10)
처음에 이렇게 풀었었는데 List Comprehension을 이용하면 더 간결한 코드를 짤 수 있을 것 같아서 추가로 정리해보았다.
풀이 코드 - 2
num = list(map(int, input().split()))
result = sum(x * x for x in num)
print(result % 10)
[ 개념 정리 - List Comprehension ]
List Comprehension : 리스트를 간결하게 만들 수 있는 방법
한 줄로 간단하게 표현하여 새로운 리스트를 만들 수 있다.
< 추가할 요소 > for < 반복 변수 > in < 반복 가능 객체 > if < 조건문 (선택) >
위의 코드에서는 x * x for x in num 방식으로 사용하였다. 이의 뜻은 다음과 같다.
- for x in num : 리스트 num에서 요소를 x라는 변수에 저장하여 하나씩 가져온다.
- x * x : 가져온 요소 x를 제곱한다.
- 최종적으로 가져온 모든 x * x 결과를 더하여(sum함수) 새로운 리스트로 만든다.
만약 sum함수를 사용하지 않는다면 result는 모든 x * x 결과가 저장된 새로운 리스트가 된다.
num = list(map(int, input().split()))
result = [x * x for x in num]
print(result)
// 출력 결과
[0, 16, 4, 25, 36]
새로운 리스트를 만들어주는 것이므로 대괄호 [ ] 를 사용하여 구문을 묶어주어야 함을 잊지 말자 !!