#문제
3052번: 나머지
https://www.acmicpc.net/problem/3052
3052번: 나머지
각 수를 42로 나눈 나머지는 39, 40, 41, 0, 1, 2, 40, 41, 0, 1이다. 서로 다른 값은 6개가 있다.
www.acmicpc.net
#접근방법
수 10개를 입력받은 뒤, 이를 42로 나눈 나머지를 구한 다음 서로 다른 값이 몇 개 있는지 출력해야한다.
42칸의 배열을 만든 후, 42로 나눈 나머지 값의 배열인덱스에 기록을 하고 값이 들어있는 배열칸이 몇 개 있는지 출력하면 풀 수 있다.
반응형
#풀이
#include <stdio.h>
int arr[42];
int main(){
int x;
int ans = 0;
for(int i=0;i<10;i++){
scanf("%d",&x);
arr[x%42] = 1;
}
for(int i=0;i<42;i++)
ans += arr[i];
printf("%d",ans);
return 0;
}
수를 입력받고 arr[x%42] = 1로 배열에 42로 나눈 나머지 값에 1을 저장해준다.
그리고 arr배열에 1이 들어있는 칸을 다 더해주면 서로 다른 값이 몇 개 있는지 구할 수 있다.
#성능
#정리
42로 나눈 나머지 값은 0부터 41까지라는 사실을 알고 이를 배열의 인덱스로 생각하여 구현을 할 수 있으면 풀 수 있는 문제였다.
'하루 한 문제' 카테고리의 다른 글
[백준] 5639번 : 이진 검색 트리 [C/C++] (3) | 2021.12.18 |
---|---|
[백준] 9498번 : 시험 성적 [C/C++] (0) | 2021.12.18 |
[백준] 10998번 : A x B [C/C++] (0) | 2021.12.18 |
[백준] 1991번 : 트리 순회 [C/C++] (0) | 2021.12.14 |
[백준] 1932번 : 정수 삼각형 [C/C++] (0) | 2021.12.13 |