Post

[Programmers] #181916 - 주사위 게임 3 [Java][C++][Python]

[Programmers] #181916 - 주사위 게임 3 [Java][C++][Python]

문제 링크


1. 아이디어

a, b, c, d 네 값이 얼마나 겹치는지에 따라 점수 계산식이 다르므로, 겹치는 값이 많은 경우부터 순서대로 조건을 검사해 분기 처리를 했다.


2. 복잡도

접근시간공간
풀이$O(1)$$O(1)$

3. 코드

풀이 [Java][C++][Python]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
class Solution {
    public int solution(int a, int b, int c, int d) {
        if (a == b && b == c && c == d) {
            return 1111 * a;
        } else if (b == c && c == d) {
            return (10 * b + a) * (10 * b + a);
        } else if (c == d && d == a) {
            return (10 * c + b) * (10 * c + b);
        } else if (d == a && a == b) {
            return (10 * d + c) * (10 * d + c);
        } else if (a == b && b == c) {
            return (10 * a + d) * (10 * a + d);
        } else if (a == b && c == d) {
            return (a + c) * Math.abs(a - c);
        } else if (a == c && b == d) {
            return (a + b) * Math.abs(a - b);
        } else if (a == d && b == c) {
            return (a + b) * Math.abs(a - b);
        } else if (a == b) {
            return c * d;
        } else if (a == c) {
            return b * d;
        } else if (a == d) {
            return b * c;
        } else if (b == c) {
            return a * d;
        } else if (b == d) {
            return a * c;
        } else if (c == d) {
            return a * b;
        } else {
            return Math.min(Math.min(a, b), Math.min(c, d));
        }
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#include <bits/stdc++.h>
using namespace std;

int solution(int a, int b, int c, int d) {
    if (a == b && b == c && c == d) {
        return 1111 * a;
    } else if (b == c && c == d) {
        return (10 * b + a) * (10 * b + a);
    } else if (c == d && d == a) {
        return (10 * c + b) * (10 * c + b);
    } else if (d == a && a == b) {
        return (10 * d + c) * (10 * d + c);
    } else if (a == b && b == c) {
        return (10 * a + d) * (10 * a + d);
    } else if (a == b && c == d) {
        return (a + c) * abs(a - c);
    } else if (a == c && b == d) {
        return (a + b) * abs(a - b);
    } else if (a == d && b == c) {
        return (a + b) * abs(a - b);
    } else if (a == b) {
        return c * d;
    } else if (a == c) {
        return b * d;
    } else if (a == d) {
        return b * c;
    } else if (b == c) {
        return a * d;
    } else if (b == d) {
        return a * c;
    } else if (c == d) {
        return a * b;
    } else {
        return min({a, b, c, d});
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
def solution(a, b, c, d):
    if a == b == c == d:
        return 1111 * a
    elif b == c == d:
        return (10 * b + a) ** 2
    elif c == d == a:
        return (10 * c + b) ** 2
    elif d == a == b:
        return (10 * d + c) ** 2
    elif a == b == c:
        return (10 * a + d) ** 2
    elif a == b and c == d:
        return (a + c) * abs(a - c)
    elif a == c and b == d:
        return (a + b) * abs(a - b)
    elif a == d and b == c:
        return (a + b) * abs(a - b)
    elif a == b:
        return c * d
    elif a == c:
        return b * d
    elif a == d:
        return b * c
    elif b == c:
        return a * d
    elif b == d:
        return a * c
    elif c == d:
        return a * b
    else:
        return min(a, b, c, d)

This post is licensed under CC BY 4.0 by the author.