※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※
이번에 볼 문제는 백준 4641번 문제인 Doubles이다.
문제는 아래 링크를 확인하자.
https://www.acmicpc.net/problem/4641
4641번: Doubles
2~15개의 서로 다른 자연수로 이루어진 리스트가 있을 때, 이들 중 리스트 안에 자신의 정확히 2배인 수가 있는 수의 개수를 구하여라. 예를 들어, 리스트가 "1 4 3 2 9 7 18 22"라면 2가 1의 2배, 4가 2의
www.acmicpc.net
반복문을 통해 수를 계속해서 읽어나가면서 0을 만날 때와 -1을 만날 때, 기타 다른 수를 만날 때의 행동을 각각 구현해주자.
0을 만나면 지금까지 읽은 수들 사이에서 두 배 관계인 수의 쌍의 개수를 세어 출력해주고, 지금까지 읽은 수들을 초기화한다.
-1을 만나면 입력이 더 없으므로 반복문을 탈출한다.
그 외의 입력은 수가 주어진 것이므로 해당 수가 주어졌음을 배열에 기록한다.
아래는 제출한 소스코드이다.
#include <iostream>
#include <cstring>
using namespace std;
int arr[101];
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
int x; cin >> x;
while (x > -1) {
if (x == 0) {
int ans = 0;
for (int i = 1; i < 51; i++) {
if (arr[i] && arr[i * 2]) ans++;
}
cout << ans << '\n';
memset(arr, 0, sizeof(arr));
}
else arr[x] = 1;
cin >> x;
}
}
728x90
'BOJ' 카테고리의 다른 글
[BOJ 9084 // C++] 동전 (0) | 2022.05.29 |
---|---|
[BOJ 9047 // C++] 6174 (0) | 2022.05.29 |
[BOJ 9046 // C++] 복호화 (0) | 2022.05.29 |
[BOJ 4589 // C++] Gnome Sequencing (0) | 2022.05.29 |
[BOJ 5376 // C++] 소수를 분수로 (0) | 2022.05.29 |