본문 바로가기
C++

[프로그래머스] 주사위 게임 2

by 띰쥬 2025. 8. 28.
728x90
반응형
SMALL

#include <string>
#include <vector>

using namespace std;

int solution(int a, int b, int c) {
    
    // 세개의 숫자가 
    // 모두 다르면 a+b+c
    // 두개는 같고 하나 다르면  (a + b + c) × (a^2 + b^2 + c^2)
    // 모두 같으면  (a + b + c) × (a^2 + b^2 + c^2 ) × (a^3 + b^3 + c^3 )
    
    bool ab = (a == b ? true : false);
    bool bc = (c == b ? true : false);
    bool ca = (a == c ? true : false);
    
    if(ab * bc * ca)
        return (a + b + c) * (a*a + b*b + c*c ) * (a*a*a + b*b*b + c*c*c );
    else if(!ab && !bc && !ca)
        return a+b+c;
    else
        return (a + b + c) * (a*a + b*b + c*c);
    
}

 

 

*여기서 set의 개념을 적용하면 코드가 간결해짐

* set은 항목의 중복내용을 삭제하기 때문

 

#include <string>
#include <vector>
#include <set>

using namespace std;

int solution(int a, int b, int c) {
    
    // 세개의 숫자가 
    // 모두 다르면 a+b+c
    // 두개는 같고 하나 다르면  (a + b + c) × (a^2 + b^2 + c^2)
    // 모두 같으면  (a + b + c) × (a^2 + b^2 + c^2 ) × (a^3 + b^3 + c^3 )
    
    set<int> abc = {a,b,c};
    
    if(abc.size()==3)
        return a+b+c;
    else if(abc.size()==2)
        return (a + b + c) * (a*a + b*b + c*c);
    else if(abc.size()==1)
        return (a + b + c) * (a*a + b*b + c*c ) * (a*a*a + b*b*b + c*c*c );
    
}

728x90
반응형
LIST

댓글