Notice
Recent Posts
Recent Comments
Link
뭐라도 배우면 기록하자
[알고리즘 문제풀이] 최빈수 구하기 본문
문제 출처: https://swexpertacademy.com 의 1204번 문제
삼성 측에서 "※ SW Expert 아카데미의 문제를 무단 복제하는 것을 금지합니다." 라고 하여 제 코드와 간단한 코드 설명만 업로드하겠습니다.
내가 작성한 코드
#include <stdio.h>#include <stdlib.h>int main(void){ int array[101]; //점수는 0점 ~100점 사이의 정수이므로 배열의 Index를 학생 점수, 배열의 Value를 해당 점수 빈도수로 사용하기 위함 int loop, score, max, maxIndex; scanf("%d", &loop); int * num = (int *)malloc(sizeof(int)*loop); //Test case 수에 따라 해당 크기의 배열 생성(정답 넣어두기 위함) for(int i = 0; i < loop; i++){ for(int j = 0 ; j < 101; j++){ array[j] = 0; } int cur_loop; scanf("%d", &cur_loop); //이 부분 때문에 에러 꽤 났었네요.. input 모두가 학생 점수라고 생각했어서... for(int q = 0; q < 1000; q++){ scanf("%d", &score) ; array[score]++; //Input(학생 점수)에 따라 배열의 Index(학생점수)의 value(빈도수)를 +1 } max = 0; maxIndex = 0; for(int k = 0; k < 101; k++){ if(max <= array[k]){ //최빈수를 구하는 부분 max = array[k]; maxIndex = k; } } num[cur_loop-1] = maxIndex; //최빈수를 정답 배열에 초기화 } for(int p = 1; p < loop+1; p++){ printf("#%d %d\n", p, num[p-1]); } free(num); return 0;}점수는 0점 ~ 100점 사이의 정수이니까 이를 기반으로 배열의 Index를 학생의 점수로 생각하는 것이 관건이었던 것 같습니다. 최빈수 자체는 갯수 파악(MAX값 찾기)로 쉬운 부분이나, 입력 값(학생 점수)를 어떻게 저장해둘 것이고 어떻게 빈도수를 파악할 것인가가 이번 문제를 풀 수 있는지 없는지를 나눈 것 같네요.
'프로그래밍언어공부 > C' 카테고리의 다른 글
| [알고리즘 문제풀이] 조교의 성적 매기기 (0) | 2019.01.06 |
|---|---|
| [알고리즘 문제풀이] View (0) | 2019.01.01 |
| [알고리즘 문제풀이] 분수찾기 (0) | 2018.12.25 |
| [알고리즘 문제풀이] 벌집 (0) | 2018.12.24 |
| [C언어] chap28 도전 프로그래밍 4-5 (0) | 2018.04.25 |
Comments