-
[프로그래머스/C++] 최빈값 구하기알고리즘 2023. 3. 7. 22:24
- 최빈값 구하기
문제 설명최빈값은 주어진 값 중에서 가장 자주 나오는 값을 의미합니다. 정수 배열 array가 매개변수로 주어질 때, 최빈값을 return 하도록 solution 함수를 완성해보세요. 최빈값이 여러 개면 -1을 return 합니다.
제한사항- 0 < array의 길이 < 100
- 0 ≤ array의 원소 < 1000
입출력 예arrayresult[1, 2, 3, 3, 3, 4] 3 [1, 1, 2, 2] -1 [1] 1
예전에 비슷한 문제를 풀었던 기억이나서
우선 각 값 별 몇회 나왔는지 저장하는 count 배열을 만들었음
[1,1,2,2]의 array가 주어지면
count[1] = 2, count[2] = 2 가 될수있게 저장을 해두고
count 배열에서 반복문을 실행하며
가장 큰 수가 저장된 위치를 찾아주면됨
그리고 max가 같은 위치가 더 있으면 -1을 출력하도록 했음
#include <string> #include <vector> using namespace std; int solution(vector<int> array) { int answer = 0; int count[1001] ={0}; int num = 0; int max = 0; // 가장큰수 int max_cnt = 0; // 가장 큰수가 몇번 나오는지 for(int i = 0; i < array.size(); i++) { num = array[i]; count[num]++; } for(int i = 0; i < 1001; i++) { if(max_cnt != 0 && max_cnt == count[i]) { answer = -1; } else if(count[i] > max_cnt) { max = i; max_cnt = count[i]; answer = max; } } return answer; }
처음 실행했을땐 막 700 이런 값 나오면서 실패했는데
내가 배열 선언하면서 초기화를 안해줘서 그런듯
배열 0으로 초기화하니까 정상적으로 잘 나옴
'알고리즘' 카테고리의 다른 글
[프로그래머스/C++] 모스부호(1) (0) 2023.03.09 [프로그래머스/C++] 진료순서 정하기 (1) 2023.03.09 [프로그래머스/C++] 분수의 덧셈 (0) 2023.03.07 [프로그래머스/C++] 문자열 뒤집기 (0) 2023.03.02 [프로그래머스/SQL] 가격이 제일 비싼 식품의 정보 출력하기 (0) 2023.02.23