※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※

 

이번에 볼 문제는 백준 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

+ Recent posts