[백준] 3052번 나머지 C++ 문제 풀이 1차원배열
2019. 8. 6. 12:56ㆍ알고리즘/백준
728x90
반응형
문제
두 자연수 A와 B가 있을 때, A%B는 A를 B로 나눈 나머지 이다. 예를 들어, 7, 14, 27, 38을 3으로 나눈 나머지는 1, 2, 0, 2이다.
수 10개를 입력받은 뒤, 이를 42로 나눈 나머지를 구한다. 그 다음 서로 다른 값이 몇 개 있는지 출력하는 프로그램을 작성하시오.
입력
첫째 줄부터 열번째 줄 까지 숫자가 한 줄에 하나씩 주어진다. 이 숫자는 1,000보다 작거나 같고, 음이 아닌 정수이다.
출력
첫째 줄에, 42로 나누었을 때, 서로 다른 나머지가 몇 개 있는지 출력한다.
예제 입력 1
39
40
41
42
43
44
82
83
84
85
예제 출력 1
6
문제 풀이
#include <iostream>
int main(void){
int num, sum = 0, remainderArr[42] = {0,};
for(int i = 0; i < 10; i++){
std::cin>>num;
if(!remainderArr[num % 42]++)
sum++;
}
std::cout<<sum;
}
지난 문제와 비슷한 유형입니다.
42로 나누기 때문에 나머지 결과 값은 0부터 41까지만 나오게 되므로 remainderArr[42]를 0으로 초기화 하였습니다.
숫자를 입력받음과 동시에 42로 나눠서 나머지를 구한 뒤 그 나머지에 해당하는 배열 인덱스를 찾아 값이 0일 경우,
후위 연산자를 통해 1씩 늘려주고 sum도 1씩 증가 시켰습니다. 0이 아니면 조건문을 타지 않고 sum도 더하지 않게 됩니다. 결과적으로 인덱스마다 value가 0일 경우만 sum에 1씩 더하게 되는 코드가 완성이 됩니다.
마지막에 sum만 출력하면 예제와 같은 결과를 보실 수 있습니다.
출처 : https://www.acmicpc.net/problem/3052
728x90
반응형
'알고리즘 > 백준' 카테고리의 다른 글
[백준] 8958번 OX퀴즈 C/C++ 문제 풀이 1차원배열 (0) | 2019.08.08 |
---|---|
[백준] 1546번 평균 C/C++ 문제 풀이 1차원배열 (0) | 2019.08.07 |
[백준] 2577번 숫자의 개수 C/C++ 문제 풀이 1차원배열 (0) | 2019.08.05 |
[백준] 2920번 음계 C/C++ 문제 풀이 1차원배열 (2) | 2019.07.29 |
[백준] 2562번 최댓값 C++ 문제 풀이 1차원배열 (0) | 2019.07.26 |