1. 문제 상세
https://www.acmicpc.net/problem/3052
2. 문제 접근
입력받은 10개의 정수를 42로 나누었을 때, 다른 나머지가 몇 개인지 출력하자.
정수를 42로 나누었을 때 나올 수 있는 나머지는 0~41 까지 총 42개 이다.
따라서 크기 42의 bool 형식의 배열을 선언하고, 인덱스 0~41 까지를 나머지 값이라고 보자.
나머지 값을 확인하여 해당 인덱스를 true 로 바꾸고, 배열에서 true 의 개수를 확인하면 다른 나머지가 몇 개인지 알 수 있다.
3. 문제 풀이
#include <iostream>
using namespace std;
int main() {
int n, count = 0;
bool a[42] = {false};
for(int i = 0; i < 10; i++) {
cin >> n;
a[n%42] = true;
}
for(int i = 0; i < 42; i++) if(a[i] == true) count++;
cout << count;
}
정수형 변수 n 과 count 를 선언하고 count 를 0으로 초기화한다.크기가 42인 boolean 형 변수 a 를 선언하고 모든 값을 false 로 초기화한다.
for문으로 i 가 0부터 10보다 작을 때 1씩 더하며 반복한다.반복에서는 cin 으로 정수를 입력받아 n 에 저장하고, 배열 a 의 n 을 42로 나눈 나머지 값의 인덱스를 true 로 바꾼다.
위의 반복문이 끝나면 for문으로 i 가 0부터 42보다 작을 때 1씩 더하며 반복한다.반복에서는 if문으로 배열 a 의 i 번 인덱스의 값이 true 라면 count 에 1을 더하도록 한다.
4. 성능 확인
5. 마무리
참,거짓 값을 가지는 bool 형 변수를 저장하는 bool 형식의 배열을 사용해 보았다.
bool 형식의 배열은 선언 시 모든 값이 기본으로 false값을 가진다고 한다.
'백준 - 단계별로 풀어보기 > 1차원 배열' 카테고리의 다른 글
[백준] 1546번 : 평균 | C++ (0) | 2023.09.22 |
---|---|
[백준] 10811번 : 바구니 뒤집기 | C++ (0) | 2023.09.22 |
[백준] 5597번 : 과제 안 내신 분..? | C++ (0) | 2023.09.21 |
[백준] 10813번 : 공 바꾸기 | C++ (0) | 2023.09.21 |
[백준] 10810번 : 공 넣기 | C++ (0) | 2023.09.21 |