#문제
https://www.acmicpc.net/problem/4641
4641번: Doubles
문제 2~15개의 서로 다른 자연수로 이루어진 리스트가 있을 때, 이들 중 리스트 안에 자신의 정확히 2배인 수가 있는 수의 개수를 구하여라. 예를 들어, 리스트가 "1 4 3 2 9 7 18 22"라면 2가 1의 2배, 4�
www.acmicpc.net
#풀이
이러한 유형의 문제가 처음 이해가 잘 되지 않았다. 그 이유는
이와 같은 입출력 예시를 보고 왼쪽의 숫자들의 입력이 모두 끝나면 오른쪽과 같이 출력이 돼야 한다고 생각했기 때문이다. 하지만 "각 테스트 케이스마다 한 줄에 걸쳐 정답을 출력한다."라는 의미는 다음과 같았다.
테스트 케이스를 입력할 때마다 정답이 출력되는 형태인 것이다. 이와 비슷한 문제를 계속해서 보게 될 텐데 이러한 형태로 입출력이 진행된다는 사실을 반드시 인지해야겠다.
이번 문제에서 자기자신과 자기자신을 제외한 나머지를 모두 비교해야 했는데, 이는 [C++] 백준 7568번 : 덩치 (S5)와 같은 방법으로 이중for문을 이용한다. 이때, 자기자신은 자기자신의 2배가 될 수 없으므로 자기자신끼리 비교하는 경우는 자연스럽게 제외된다.
#소스코드
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 | #include<iostream> using namespace std; int find_doubles(int* arr, int len) { int cnt = 0; for (int i = 0; i < len; i++) { for (int j = 0; j < len; j++) { if (arr[j] == arr[i] * 2) cnt++; } } return cnt; } int main(void) { int arr[20]; int num = -100; int cnt = 0; while (num != -1) { cin >> num; if (num == 0) { cout << find_doubles(arr, cnt) << endl; cnt = 0;//다음 test case를 위해 } else { arr[cnt] = num; cnt++; } } return 0; } | cs |
'Algorithm > Brute-force' 카테고리의 다른 글
[Python] 백준 2798번 : 블랙잭 (B2) - 브루트포스단계별1 (0) | 2021.01.28 |
---|---|
[C++] 백준 2798번 : 거꾸로 구구단 (B2) (0) | 2020.07.15 |
[C++] 백준 1065번 : 한수 (S4) (0) | 2020.07.15 |
[C++] 백준 7568번 : 덩치 (S5) (0) | 2020.07.15 |
[C++] 백준 2858번 : 기숙사 바닥 (B2) (0) | 2020.07.15 |