728x90
문제
컴퓨터를 제조하는 회사인 KOI 전자에서는 제조하는 컴퓨터마다 6자리의 고유번호를 매긴다. 고유번호의 처음 5자리에는 00000부터 99999까지의 수 중 하나가 주어지며 6번째 자리에는 검증수가 들어간다. 검증수는 고유번호의 처음 5자리에 들어가는 5개의 숫자를 각각 제곱한 수의 합을 10으로 나눈 나머지이다.
예를 들어 고유번호의 처음 5자리의 숫자들이 04256이면, 각 숫자를 제곱한 수들의 합 0+16+4+25+36 = 81 을 10으로 나눈 나머지인 1이 검증수이다.
입력
첫째 줄에 고유번호의 처음 5자리의 숫자들이 빈칸을 사이에 두고 하나씩 주어진다.
출력
첫째 줄에 검증수를 출력한다.
예제 입력
0 4 2 5 6
예제 출력
1
#include <stdio.h> int main(void){ int n[6], result=0; scanf("%d %d %d %d %d", &n[0], &n[1], &n[2], &n[3], &n[4]); for(int i=0;i<5;i++){ result+=(n[i]*n[i]); } result%=10; printf("%d", result); }
어떻게 해야 효율적으로 풀 수 있을까 많이 고민했던 문제입니다.
방법은 다 떠올랐는데 배열로 푸는 방법과 그냥 하나하나 변수를 선언해서 풀 수 있는 방법이었습니다.
for문에서 효율적으로 진행하기 위해 배열방식을 선택했습니다.
그리고 결과를 출력할 수 있는 result 변수에 제곱한 값을 넣어주었습니다.
제곱 연산자도 있을 텐데 찾아보지 않고 그냥 풀어서 두번 곱해주는 방식을 취하였습니다.
for문이 끝난 뒤에 10으로 나누어지고 나머지를 출력해주어야 하므로 %를 활용해서 계산하여 출력을 해 주었습니다.
728x90
'C language > Baekjoon' 카테고리의 다른 글
[C] 백준 문제풀이 10250: ACM 호텔 (0) | 2022.01.10 |
---|---|
[C] 백준 문제풀이 2914: 저작권 (0) | 2021.12.30 |
[C] 백준 5543번 풀이: 상근날드 (0) | 2021.07.28 |
[C] 백준 19698번 풀이: 헛간 청약 (0) | 2021.07.27 |
[C] 백준 10178번 풀이: 할로윈의 사탕 (0) | 2021.07.27 |