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
#include <iostream>
using namespace std;
void findDouble(int* num);
int main() {
int num[15] = { 0, };
int temp = -2, i = 0;
//초기값을 0으로 주니까 while 에서 함수를 실행하길래
//입력값은 자연수만 주니까 -2로 temp를 선언
while (temp != -1) {
cin >> temp;
if (temp == 0) { //한 줄의 테스트 케이스가 모두 입력되면
findDouble(num); //주어진 조건의 수를 찾는 함수 실행
for (int k = 0; k < 15; k++)
num[k] = 0; //새로운 테스트 케이스 입력을 받기 위해서 num 배열 리셋
i = 0;
}
else {
num[i++] = temp;
}
}
}
void findDouble(int* num) {
int cnt = 0, i = 0, j = 0;
while (num[i] != 0) { //num에 테스트 케이스가 입력되어 있는 경우만 보기때문에
while (num[j] != 0) { //0이면 while을 탈출하고 다음 실행
if (num[j] == (num[i] * 2) ||(num[j]*2)==num[i]) { //num을 정렬하지 않아서
cnt++;
}
j++;
}
i++;
j = i; //j를 i로 만들어 줘야 중복 x
}
cout << cnt << "\n";
}
'알고리즘' 카테고리의 다른 글
[boj 1753/c++] 최단경로 (0) | 2023.04.27 |
---|---|
[boj 9465/c++] 스티커(동적계획법, dp) (0) | 2022.08.07 |
[boj 1012, 2606, 7576/C++] 유기농 배추, 바이러스, 토마토(bfs와 dfs) (0) | 2022.07.17 |
[BOJ 11866, 1158, 11025/C++] 요세푸스 문제 시리즈 (0) | 2022.07.10 |
[c++] 백준 2999번 비밀 이메일 (0) | 2021.01.03 |