문제 링크
1. 아이디어
a, b, c, d 네 값이 얼마나 겹치는지에 따라 점수 계산식이 다르므로, 겹치는 값이 많은 경우부터 순서대로 조건을 검사해 분기 처리를 했다.
2. 복잡도
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)
|