코딩테스트 연습/프로그래머스 LV.0

[프로그래머스] Lv.0 가위 바위 보 - 자바(Java)

5ein 2024. 4. 6. 23:34

문제: 코딩테스트 연습 - 가위 바위 보 | 프로그래머스 스쿨 (programmers.co.kr)

문제설명

가위는 2 바위는 0 보는 5로 표현합니다. 가위 바위 보를 내는 순서대로 나타낸 문자열 rsp가 매개변수로 주어질 때, rsp에 저장된 가위 바위 보를 모두 이기는 경우를 순서대로 나타낸 문자열을 return하도록 solution 함수를 완성해보세요.


제한사항

  • 0 < rsp의 길이 ≤ 100
  • rsp와 길이가 같은 문자열을 return 합니다.
  • rsp는 숫자 0, 2, 5로 이루어져 있습니다.

입출력 예

rsp result
"2" "0"
"205" "052"

나의 문제 풀이

class Solution {
    public String solution(String rsp) {
        String answer = "";
        for (String s : rsp.split("")) {
            if (s.equals("2")) answer += "0";
            else if (s.equals("0")) answer += "5";
            else answer += "2";
        }
        return answer;
    }
}

다른 사람의 문제풀이

//다른사람 풀이 1 (HashMap 이용)
import java.util.HashMap;
import java.util.Map;
class Solution {
    public String solution(String rsp) {
        //2 - 가위, 0 - 바위, 5 - 보
        Map<String, String> winNumbers = new HashMap<>();
        winNumbers.put("2", "0");
        winNumbers.put("0", "5");
        winNumbers.put("5", "2");

        StringBuilder answer = new StringBuilder();

        for (int i = 0; i < rsp.length(); i++) {
            answer.append(winNumbers.get(rsp.substring(i, i+1)));
        }

        return answer.toString();
    }
}

//다른사람 풀이2 (.toCharArray() 이용)
class Solution {
    public String solution(String rsp) {
        char[] cRsp = rsp.toCharArray();
        StringBuilder answer = new StringBuilder();
        for(int i=0; i < cRsp.length; i++) {
            switch(cRsp[i]) {
                case '0' :
                    answer.append("5");
                    break;
                case '2' :
                    answer.append("0");
                    break;
                case '5' :
                    answer.append("2");
                    break;
            }
        }
        return answer.toString();

    }
}

느낀점

toCharArray를 이용하는 방법은 생각은 하고 있었는데, HashMap을 이용한 방법은 생각지 못했었다.

이방법으로도 다시 한번 풀어 봐야겠다.


문제 출처: 코딩테스트 연습 | 프로그래머스 스쿨 (programmers.co.kr)