일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
- 혁펜하임강의
- AI강의
- C++ 함수
- 1로만들기
- CUDA
- 비교연산자
- 1463
- pytorch
- C++ 백준
- 백준C++
- 백준1026
- for문
- 혁펜하임AI
- cuDNN
- 9095
- tensorflow
- 혁펜하임
- C++
- AIDEEPDIVE
- C++ 공백 입력
- 패스트캠퍼스혁펜하임
- 혁펜하임강의후기
- precision
- c++ 기초
- 백준9095
- 백준1463
- 백준
- 반복문
- 조건문
- 패스트캠퍼스
- Today
- Total
코딩하는 덕구 🐶
34. C++ 백준 3052 번 나머지 본문
안녕하세요! 코딩하는 덕구입니다~!
C++ 백준 3052 번 입니다~!
문제
두 자연수 A와 B가 있을 때, A%B는 A를 B로 나눈 나머지 이다. 예를 들어, 7, 14, 27, 38을 3으로 나눈 나머지는 1, 2, 0, 2이다.
수 10개를 입력받은 뒤, 이를 42로 나눈 나머지를 구한다. 그 다음 서로 다른 값이 몇 개 있는지 출력하는 프로그램을 작성하시오.
입력
첫째 줄부터 열번째 줄 까지 숫자가 한 줄에 하나씩 주어진다. 이 숫자는 1,000보다 작거나 같고, 음이 아닌 정수이다.
출력
3052번: 나머지
각 수를 42로 나눈 나머지는 39, 40, 41, 0, 1, 2, 40, 41, 0, 1이다. 서로 다른 값은 6개가 있다.
www.acmicpc.net
#include<iostream>
using namespace std;
int main() {
cin.tie(NULL);
ios_base::sync_with_stdio(false);
int arr[42] = {0,}; //나머지가 나오는지 저장하기 위한 배열 생성
int input, sum = 0; //입력을 받기위한 정수 input, 합을 저장하기 위한 정수 sum을 생성
for(int i = 0; i<10; i++){
cin>>input;
//for문을 이용해 input을 10번 받고, input을 42로 나눴을때의
arr[input%42] = 1; //42로 나눈 후 나머지 숫자에 맞는 배열의 성분을 1로 바꾸어줌
}
for(int i = 0; i<42; i++){
sum = sum + arr[i]; //배열을 0부터 41까지 돌면서 합해줌
//(나머지가 나왔으면 1, 없으면 0)
}
cout<<sum; //합을 출력
return 0;
}
먼저 나머지가 나오는지 체크하기 위한 배열을 int arr[42] = {0,} 으로 생성하고
bool type으로 생성해도 가능 하지만 서로 다른 값이 몇 개 있는지 출력해야 되므로
계산 편의성을 위해 int type으로 해주었습니다~!
int arr[42] = {0,} 을 하게되면 0번 부터 41번 (처음부터 배열의 끝)까지의 성분이 0으로 초기화 됩니다.
10개의 input을 입력 받은 후 42로 나눠 그 나머지 값을 배열 번호로 취급하고 그 배열의 성분은 1로 바꾸어 줍니다.
이미 나온 나머지 여도 1 에서 1로 변경, 처음 나왔어도 0에서 1로 변경 되므로 중복을 쉽게 제거할 수 있죠!
이제 배열의 성분들을 더하기만 하면 됩니다!
C++ 백준 3052 번 이었습니다! 감사합니다~!
'알고리즘 문제 풀이' 카테고리의 다른 글
36. C++ 백준 8958 번 OX 퀴즈. feat. C++ string (0) | 2022.01.23 |
---|---|
35. C++ 백준 1546 번 평균 (0) | 2022.01.22 |
33. C++ 백준 2577 번 숫자의 개수 (0) | 2022.01.22 |
32. C++ 백준 2562 번 최댓값 (2) | 2022.01.22 |
31. C++ 백준 10818 최소, 최대. feat. C++ 배열 (0) | 2022.01.21 |