알고리즘/SW Expert Academy
200916 [S/W 문제해결 기본] 1일차 - 최빈수 구하기 / 실패
쭈친
2020. 9. 15. 11:02
SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
문제:
입력 값에서 가장 많이 나온 수를 출력합니다. 같은 횟수로 나오면 더 큰 값을 출력합니다.
입력 값의 점수를 인덱스로 사용해서 횟수를 셉니다.
처음엔 입력 값을 정렬 해야 하는 줄 알았는데 그럴 필요가 없었습니다.
#include <iostream>
using namespace std;
int main(int argc, char** argv){
int test_case;
int T;
cin>>T;
int input[1000];
int score[100];
int caseNum = 1;
for(test_case = 1; test_case <= T; ++test_case){
fill_n(input, 1000, -1);
fill_n(score, 100, -1);
int i = 0;
for(i; i<1000; i++){
cin >> input[i];
score[input[i]]++;
}
int answer=0, best = 0;
for(i; i<100; i++){
if(score[i] >= best){
best = score[i];
answer = i;
}
}
cout << '#' << caseNum << ' ' << answer << endl;
++caseNum;
}
return 0;
}
코드:
배열 선언 후 나중에 초기화 할 때 사용하는 함수를 배웠습니다.
fill_n 함수로 iostream에 포함 돼있습니다, fill_n(배열 이름, 배열 자리수, 초기화 값); 이렇게 사용합니다.
score에는 정상적으로 값이 나오는데, answer이 0만 출력 되네요.
-----------------------------------------------------------------------------------------------------------------------------------
집에 가서 다시 해보겠습니다.