이 문제는 내가 좀 신기한 방법으로 푼것 같다.
https://www.acmicpc.net/problem/3052
이 문제도 간단하다.
모든 수를 입력받고 %10 해준 후 서로 다른 나머지 값을 수를 출력한다.
<<문제 풀이 방법>>
이땐 왜 이렇게 풀었는지 잘 모르겠는데 일단 이렇게 풀었으니 이렇게 쓰겠다.
1. 각각의 숫자를 정수 배열(1)을 통해 입력받는다.
2. 반복문을 사용해 배열의(1) 각각의 원소가 자신을 포함해 몇번이나 사용 되었는지 확인한다.
이 때 같은 크기의 배열(2)을 하나 더 만들어 원래 원소의 자리에 사용된 횟수를 입력한다.
3. "1/배열(2)의 원소" 값을 출력값인 Count 변수에 더한다.
◆◆◆ 이게 무슨 소리냐면 ◆◆◆
어떠한 원소가 배열(1)에서 두번 사용되었을 경우
배열(2)에서는 [1][1][1][1][1][1][1][2][1][1][1][2] 이러한 모습이 되고
Count = 1/2 + 1/2 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 = 9
따라서 9가지 나머지가 사용된 것이다.
예시를 더 들어보자면
배열(2)가 [5][5][5][3][3][5][3][2][5][1][1][2] 인 경우
Count = 1/5 + 1/5 + 1/5 + 1/5 + 1/5 + 1/3 + 1/3 + 1/3 +1/2 + 1/2 + 1/1 + 1/1 = 5
따라서 5가지 나머지가 사용된 것이다.
<<Code>>
#include <iostream>
using namespace std;
int main() {
// (1)
int NumArray[10];
for(int i=0; i < 10; ++i) {
cin >> NumArray[i];
NumArray[i] %= 42;
}
// (2)
int NumArray2[10] = {0,};
for (int i = 0; i < 10; ++i) {
for (int k = 0; k < 10; ++k) {
if (NumArray[i] == NumArray[k]){
NumArray2[i]++;
}
}
}
//(3)
/// 각 배열의 수들이 몇개씩 써졌는지 확인
float Count = 0;
/// 써진 수를 총 num으로 나누어서 더해줌 ㅋㅋ
for (float Num:NumArray2){
Count += 1/Num;
}
cout << Count << "\n";
return 0;
}
요상하게 풀었네
<<GitHub>>
https://github.com/J2on/BaekjoonOnlineJudge/blob/master/Code/Baekjoon_3052.cpp
< 백준 BaekJoon : 4344번 평균은 넘겠지 > C++ (0) | 2021.09.25 |
---|---|
< 백준 BaekJoon : 8958번 OX퀴즈 > C++ (0) | 2021.09.25 |
< 백준 BaekJoon : 1546번 평균 > C++ (0) | 2021.09.19 |
< 백준 BaekJoon : 2577번 숫자의 개수 > C++ (0) | 2021.09.19 |
< 백준 BaekJoon : 1065번 한수 > C++ (0) | 2021.09.18 |
댓글 영역