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
3
4
5
6
7
8
9
10
11
def solution(rsp):
    lst = []
    for c in rsp:
        if c == "0":
            lst.append("5")
        elif c == "2":
            lst.append("0")
        else:
            lst.append("2")

    return "".join(lst)

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