https://school.programmers.co.kr/learn/courses/30/lessons/340199
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
내코드
#include <string>
#include <vector>
#include <iostream>
using namespace std;
int solution(vector<int> wallet, vector<int> bill) {
int answer = 0;
int bill_min, bill_max, w_min, w_max;
if (wallet[0] > wallet[1]){
w_max = wallet[0];
w_min = wallet[1];
} else {
w_max = wallet[1];
w_min = wallet[0];
}
while(1) {
if (bill[0] > bill[1]){
bill_max = bill[0];
bill_min = bill[1];
bill[0] /= 2;
} else {
bill_max = bill[1];
bill_min = bill[0];
bill[1] /= 2;
}
if (bill_min <= w_min && bill_max <=w_max) {
break;
};
answer++;
}
return answer;
}
int main() {
vector<int> wallet = {50,50};
vector<int> bill = {100,241};
int answer = solution(wallet, bill);
cout << "answer : " << answer <<endl;
return 0;
}
지피티 코드
#include <string>
#include <vector>
#include <iostream>
#include <algorithm> // std::min, std::max 사용
using namespace std;
int solution(vector<int> wallet, vector<int> bill) {
int answer = 0;
// wallet과 bill의 최소값과 최대값을 한 번에 계산
int w_min = min(wallet[0], wallet[1]);
int w_max = max(wallet[0], wallet[1]);
int bill_min = min(bill[0], bill[1]);
int bill_max = max(bill[0], bill[1]);
// 조건을 만족할 때까지 반복
while (bill_min > w_min || bill_max > w_max) {
// 더 큰 값을 나눔
if (bill_max == bill[0]) {
bill[0] /= 2;
} else {
bill[1] /= 2;
}
// 나눈 후 다시 최소값, 최대값 계산
bill_min = min(bill[0], bill[1]);
bill_max = max(bill[0], bill[1]);
answer++;
}
return answer;
}
int main() {
vector<int> wallet = {50, 50};
vector<int> bill = {100, 241};
int answer = solution(wallet, bill);
cout << "answer : " << answer << endl;
return 0;
}
- 나는 최소 변수를 따로 만들면 어떻게 본 벡터의 값을 바꿀까 했는데,
- bill_max == bill[0] 이런 방법을 쓰면 된다는 걸 깨달았다
'c++ 코테 > 문제 풀기' 카테고리의 다른 글
프로그래머스 최댓값과 최솟값 - 12939 (0) | 2024.12.04 |
---|