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

+ Recent posts