[Programmers] #120839 - 가위 바위 보 [Java][C++][Python]
[Programmers] #120839 - 가위 바위 보 [Java][C++][Python]
1. 아이디어
가위(2), 바위(0), 보(5)를 내는 순서를 표현한 문자열 rsp가 주어질 때, 각 문자를 그 패를 이기는 값으로 바꾸면 되는 문제다. 바위(0)를 이기는 패는 보(5), 가위(2)를 이기는 패는 바위(0), 보(5)를 이기는 패는 가위(2)이므로, rsp의 각 문자를 대응되는 값으로 바꾼 새 문자열을 반환하면 된다.
2. 복잡도
| 접근 | 시간 | 공간 |
|---|---|---|
| 풀이 | $O(N)$ | $O(N)$ |
($N$ = rsp의 길이)
3. 코드
풀이 [Java][C++][Python]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class Solution {
public String solution(String rsp) {
StringBuilder sb = new StringBuilder();
for (char c : rsp.toCharArray()) {
if (c == '0') {
sb.append("5");
} else if (c == '2') {
sb.append("0");
} else {
sb.append("2");
}
}
return sb.toString();
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <bits/stdc++.h>
using namespace std;
string solution(string rsp) {
string s;
for (char c : rsp) {
if (c == '0') {
s += '5';
} else if (c == '2') {
s += '0';
} else {
s += '2';
}
}
return s;
}
1
2
def solution(rsp):
return rsp.translate(str.maketrans("025", "502"))
str.maketrans로 주어진 가위 바위 보를 이기는 조합에 대응시킨 표를 만들고 translate로 각 문자를 치환하는 방식으로 해결했다.
This post is licensed under CC BY 4.0 by the author.