https://www.acmicpc.net/problem/3052
3052번: 나머지
각 수를 42로 나눈 나머지는 39, 40, 41, 0, 1, 2, 40, 41, 0, 1이다. 서로 다른 값은 6개가 있다.
www.acmicpc.net
문제의 키 포인트
1. 입력받은 수를 42로 나눈다는 점
해결 방안
1. 입력받은 수를 42로 나눠서 해당 배열을 카운트한다.
2. 나누기: 'A/B' , 나머지: 'A%B'
3. 각 배열에서 카운트가 1보다 크다면 최종 서로 다른 나머지를 카운트한다.
소스코드
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#define arr_size 42
#define count_size 10
int main(void)
{
int i, number; // 반복변수와 입력값
int count=0; // 숫자 카운트
int arr[arr_size]; // 나머지 비교 배열
// 카운트할 배열을 0으로 초기화
for (i = 0; i < arr_size; i++)
{
arr[i] = 0;
}
// 각 나머지 값 카운트
for (i = 0; i < count_size; i++)
{
scanf("%d", &number);
arr[number % 42] += 1;
}
// 총 서로 다른 나머지 계산
for(i = 0; i< arr_size; i++)
{
if (arr[i] >= 1)
{
count++;
}
}
printf("서로 다른 나머지: %d\n", count);
return 0;
}
주의할 점
1. 출력부분에 이해를 돕기 위해 "서로 다른 나머지:" 이라는 문자를 추가했기 때문에, 실제 Backjoon에 해당 코드 제출시 "틀렸습니다." 가 나올 수 있습니다.
반응형
'코딩 | 알고리즘 & 문제풀이 > 백준_Backjoon' 카테고리의 다른 글
[C언어] Backjoon_Code 4344, 평균을 넘는 학생의 비율 (0) | 2021.06.30 |
---|---|
[C언어] Backjoon_Code 8958, OX퀴즈 (0) | 2021.06.29 |
[C언어] Backjoon_Code 1546, 평균 조작하기 (0) | 2021.06.28 |
[C언어] Backjoon_Code 2577, 숫자의 개수 (0) | 2021.06.26 |
[C언어] Backjoon_Code 2562, 최대값 위치 찾기 (0) | 2021.06.25 |