본문 바로가기

백준

17450 과자 사기

#include <iostream>
#include <algorithm>
using namespace std;

int main() {
    pair<int, char> a = {2, 'a'};
    pair<int, char> b = {3, 'b'};
    
    pair<int, char> c = max(a, b);
    
    printf("%d %c\n", c.first, c.second);
    
    return 0;
}

 

어떻게 하면 잘 짤 수 있을까 고민하다 pair를 썼다. pair의 앞에는 가성비를 넣고 뒤에는 이름을 넣는다. 그리고 가성비로 비교를 한 다음 min인 pair의 두번째 값을 출력하면 된다! pair로 비교할 때 첫번째 -> 두번째로 비교한다고 하는데 문제에서는 가성비의 다름이 보장된다고 하므로 두번째를 비교할 일이 없다. 

 

혹시나 몰라 min에 pair형으로 비교를 해봤는데 잘 돌아간다!

 

 

#include <iostream>
#include <algorithm>
using namespace std;

int main() {
    double sp, sw, np, nw, up, uw;

    scanf("%lf %lf %lf %lf %lf %lf", &sp, &sw, &np, &nw, &up, &uw);

    sp *= 10; np *= 10; up *= 10;
    sw *= 10; nw *= 10; uw *= 10;

    if(sp >= 5000)
    	sp -= 500;
    if(np >= 5000)
    	np -= 500;
    if(up >= 5000)
    	up -= 500;

    pair <double, char> S = {sp / sw, 'S'};
    pair <double, char> N = {np / nw, 'N'};
    pair <double, char> U = {up / uw, 'U'};

    pair <double, char> result = min({S, N, U});
    printf("%c", result.second);
    
    return 0;
}

다행이다 맞았다

'백준' 카테고리의 다른 글

1924 2007년  (0) 2019.10.06
1152 단어의 개수  (0) 2019.10.06
16917 양념 반 후라이드 반  (0) 2019.10.06
시간복잡도와 공간복잡도  (0) 2019.10.06
14568 2017 연세대학교 프로그래밍 경시대회  (0) 2019.10.05