https://www.acmicpc.net/problem/4641
문제
2~15개의 서로 다른 자연수로 이루어진 리스트가 있을 때, 이들 중 리스트 안에 자신의 정확히 2배인 수가 있는 수의 개수를 구하여라.
예를 들어, 리스트가 "1 4 3 2 9 7 18 22"라면 2가 1의 2배, 4가 2의 2배, 18이 9의 2배이므로 답은 3이다.
입력
입력은 여러 개의 테스트 케이스로 주어져 있으며, 입력의 끝에는 -1이 하나 주어진다.
각 테스트 케이스는 한 줄로 이루어져 있으며, 2~15개의 서로 다른 자연수가 주어진다. 각 자연수는 100보다 작으며
, 리스트의 끝은 0으로 판별한다(0은 리스트에 속하지 않는다).
출력
각 테스트 케이스마다 한 줄에 걸쳐 정답을 출력한다.
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 32 33 34 35 36 37 38 39 40 41 42 43 44 | #include <stdio.h> void doubles() { int arr[201] = { 0 }; int arr2[201] = { 0 }; int N; int cnt = 0; int i; int cnt2 = 0; //N을 입력받고 arr[N]번째를 숫자 1로 입력시켜서 //N번째가 들어왔다는것을 입력받고 arr2에 그 값들을 넣음 //그래서 arr의 배열의 arr2[]의 *2 값이 1이면 더블인값이있는것이므로 cnt증가 while (1) { scanf("%d", &N); if (N == -1) break; if (N == 0) { for (i = 0;i < cnt;i++) { if (arr[arr2[i]*2]==1) cnt2++; } printf("%d\n", cnt2); for (i = 0;i < cnt;i++) //arr 함수들 초기화 { arr[arr2[i]] = 0; arr2[i] = 0; } cnt = cnt2 = 0; } else { arr2[cnt++] = N; arr[N] = 1; } } } int main() { doubles(); } | cs |
'백준 알고리즘' 카테고리의 다른 글
[C언어] 백준 알고리즘 5724번 문제 파인만 (0) | 2019.02.11 |
---|---|
[C언어] 백준 알고리즘 5717번 상근이의 친구들 문제 (0) | 2019.02.11 |
[C언어] 백준알고리즘 5666번 핫도그 문제 (0) | 2019.02.09 |
[C언어] 백준알고리즘 1158번 조세퍼스 문제 (0) | 2019.02.09 |
[C언어] 백준 알고리즘 9085번 문제 더하기 (0) | 2019.02.07 |