2023. 9. 14. 00:01, 알고리즘/프로그래머스
https://school.programmers.co.kr/learn/courses/30/lessons/120812
그동안 solution 함수를 채울때, 그 위에 전역변수로 선언한 값이나 배열이나 혹은 또 다른 자료구조등을 사용하는것이 어떤 영향을 미치는지 몰랐는데, 이 문제를 풀면서 전역으로 배열을 선언해서 모두 0으로 초기화 된 상태에서 진행하는 것을 가정해서 문제를 풀어보니 정상적으로 제출되고 정답을 통과하는것을 확인할 수 있었다. 내가 스스로 에디터상에서 문제를 풀듯이 하더라도 문제가 없어보인다. 결국 solution과 함께 제출해주고 solution 함수에서 원하는 return 값만 나오면 아직까지는 문제가 없는것으로 보인다.
그리고 이번 문제의 경우는 제한시간이 촉박해서 아래와 같은 풀이를 떠올려서 풀긴 풀었는데, 풀이가 굉장히 군더더기가 많은것 같고 깔끔하게 풀어내진 못한것 같다. 일단 아래와 같은 나의 풀이를 적어놓고, 다른 더 깔끔한 풀이가 어떻게 될지에 대해서 더 생각해보고 그러한 풀이를 추가 작성해 보도록 하겠다.
아래의 풀이는 너무 추가적이고 반복적인 연산이 많게 느껴진다.
#include <string>
#include <vector>
using namespace std;
int a[1000];
int solution(vector<int> v) {
for(auto c: v){
a[c]++;
}
int mx=-1;
for(auto b: a){
mx=max(mx,b);
}
int cnt=0;
for(auto d:a){
if(d==mx) cnt++;
}
int answer=0;
for(int i=0; i<1000; i++){
if(mx==a[i]) answer=i;
}
if(cnt==1) return answer;
else return -1;
}
'알고리즘 > 프로그래머스' 카테고리의 다른 글
Lv 0. 피자 나눠 먹기(2) - gcd(), lcm()은 <numeric> 헤더에 있다. (0) | 2023.09.14 |
---|---|
Lv 0. 피자 나눠 먹기(1) - 나머지 연산자는 %다. &로 착각하지 말자. (0) | 2023.09.14 |
Lv 0. 짝수는 싫어요 || vector에서 emplace_back()과 push_back()의 차이점 (0) | 2023.09.13 |
Lv 0. 중앙값 구하기 - sort() 함수는 <algorithm> 헤더 (0) | 2023.09.13 |
Lv.0 나이 출력 (0) | 2023.09.12 |
Comments, Trackbacks