*문제 출처는 프로그래머스에 있습니다.
문제 제목: 최빈값 구하기 (0단계)
문제 사이트: https://school.programmers.co.kr/learn/courses/30/lessons/120812
문제 설명
나의 풀이
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
int solution(vector<int> array) {
// answer : 안씀
int answer = 0;
// max는 최빈값을 구할 때 쓸 예정이다, index는 최빈값 위치, count는 최빈값 중복 검사
int max = 0, index = 0, count = 0;
// array를 정렬해준다.
sort(array.begin(), array.end());
// array의 원소의 개수는 1000개보다 작으니깐 number은 1000개의 크기로 만든다.
vector<int> number(1000, 0);
// array의 숫자를 인덱스로 받아서 number에 증가시켜준다.
for (int i : array)
number[i] += 1;
// number의 모든 원소를 검사한다.
for (int j = 0; j < 1001; j++) {
// 최빈값을 구하는 조건문
if (number[j] > max) {
max = number[j];
count = 1;
// 최빈값의 원소 위치를 index에 저장한다.
index = j;
}
// 최빈값이 한 개가 아니면 count을 증가 시킨다.
else if (number[j] == max) count += 1;
}
// 최빈값이 둘 이상이면 -1을 반환한다.
if (count != 1) return -1;
// 위 조건문이 아닐 시 최빈값의 원소 위치를 반환한다.
else return index;
}
※ 알아야 할 것
인덱스를 이용한 알고리즘을 사용하면 쉽게 풀린다.
'코딩테스트(프로그래머스 & 백준) > 프로그래머스-C++' 카테고리의 다른 글
Programmers / 숫자 짝꿍 / C++ (0) | 2024.02.02 |
---|---|
Programmers / 달리기 경주 / C++ (0) | 2024.02.01 |
Programmers / 실패율 / C++ (0) | 2024.01.31 |
Programmers / 유한소수 판별하기 / C++ (0) | 2024.01.30 |
Programmers / 소수 찾기 / C++ (0) | 2024.01.29 |