Post

[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.