2023. 9. 21. 11:33, 알고리즘/프로그래머스
https://school.programmers.co.kr/learn/courses/30/lessons/120847
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
int solution(vector<int> numbers) {
sort(numbers.begin(),numbers.end(),greater<>());
return numbers[0]*numbers[1];
}
다른 사람의 풀이를 통해 보게된 풀이인데, sort를 사용하지 않고 푸는 풀이중에 재미난 풀이방법인것 같아서 첨부해본다.
#include <string>
#include <vector>
using namespace std;
int solution(vector<int> numbers) {
int answer = 0;
int max = 0, s_max = 0;
for (int i: numbers){
if(max <= i){
s_max = max;
max = i;
}
else if(s_max <= i){
s_max = i;
}
}
answer = max * s_max;
return answer;
}
해당 로직을 보면, 가장 큰 값을 저장할 max, 그리고 그 다음 큰 값을 저장할 s_max를 선언하고,
모든 numbers의 원소에 대해서 for(int i : numbers) 로 반복문을 돌면서, i가 max보다 크다면 max를 갱신하고 s_max를 갱신,
만약 i가 max보다 크진 않지만 s_max보다 크다면 (else if (s_max<=i) 부분에 해당) s_max 의 값을 i 로 갱신하는 풀이이다.
sort를 사용하지 않는 풀이라 마음에 든다. 이러한 방법이 있다는 것도 알아두도록 하자.
'알고리즘 > 프로그래머스' 카테고리의 다른 글
Lv 0. 모음 제거 (0) | 2023.09.22 |
---|---|
Lv 0. 팩토리얼 (0) | 2023.09.21 |
Lv 0. 합성수 찾기 (0) | 2023.09.21 |
Lv 0. 주사위의 개수 (0) | 2023.09.21 |
Lv 0. 배열 회전시키기 - deque를 쓸려면 <deque> 헤더를 추가하자. 시퀀스 컨테이너에서 rotate() 함수 사용법 (0) | 2023.09.20 |
Comments, Trackbacks