새발블로그

[프로그래머스/C++] 주사위 게임 2 본문

Problem Solving/Programmers

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

EUG 2024. 3. 5. 17:17

문제

https://school.programmers.co.kr/learn/courses/30/lessons/181930

풀이방법

문제 그대로 구현...해봤는데 다른 사람의 풀이가 괜찮아서 적음

풀이1

문제 그대로~~~

풀이2

1. set을 이용해서 중복값을 제거하였다.

set.size() ==3 : 세 수가 모두 다름

set.size() ==2 : 두 수 가 같음

set.size() ==3 : 세 수가 같음

 

set헤더를 적어야함

#include <set>

 

2. 

#include <math.h> 를 사용해서 제곱수를 계산함

pow(숫자,2) : 제곱 수

pow(숫자,3) : 세 제곱 수

 

 

풀이1

#include <string>
#include <vector>

using namespace std;

int solution(int a, int b, int c) 
{
        int answer = 0;
    if (a!=b & b!=c & c!=a)
    {
        answer = (a + b + c);
        
    }
    else if ((a==b & b!=c )|| (b==c & c!=a) || (a==c & b!=c))
    {
        answer = (a + b + c) * (a*a + b*b + c*c);
          
    }
    else
    {
        answer = (a + b + c) * (a*a + b*b + c*c) *  (a*a*a + b*b*b + c*c*c);
    }

    return answer;
}

풀이2 (다른 사람풀이)

#include <string>
#include <vector>
#include <math.h>
#include <set>

using namespace std;

int solution(int a, int b, int c)
{
    set<int> s{a, b, c};
    if(s.size() == 3)
        return a + b + c;
    if(s.size() == 2)
        return (a + b + c) * (pow(a, 2) + pow(b, 2) + pow(c, 2));
    if(s.size() == 1)
        return (a + b + c) * (pow(a, 2) + pow(b, 2) + pow(c,2)) * (pow(a, 3) + pow(b, 3) + pow(c, 3));

}