[프로그래머스]가위 바위 보
가위 바위 보
문제 설명
가위는 2 바위는 0 보는 5로 표현합니다. 가위 바위 보를 내는 순서대로 나타낸 문자열 rsp가 매개변수로 주어질 때, rsp에 저장된 가위 바위 보를 모두 이기는 경우를 순서대로 나타낸 문자열을 return하도록 solution 함수를 완성해보세요.
제한사항
- 0 < rsp의 길이 ≤ 100
- rsp와 길이가 같은 문자열을 return 합니다.
- rsp는 숫자 0, 2, 5로 이루어져 있습니다.
입출력 예
rsp | result |
---|---|
“2” | “0” |
“205” | “052” |
입출력 예 설명
입출력 예 #1
- “2”는 가위이므로 바위를 나타내는 “0”을 return 합니다.
입출력 예 #2
- “205”는 순서대로 가위, 바위, 보이고 이를 모두 이기려면 바위, 보, 가위를 순서대로 내야하므로 “052”를 return합니다.
나의 풀이 코드
import java.util.Map;
import java.util.HashMap;
class Solution {
public String solution(String rsp) {
String answer = "";
String[] array_rsp;
array_rsp = rsp.split("");
HashMap<String,String> map = new HashMap<String,String>();
map.put("2","0");
map.put("0","5");
map.put("5","2");
for (int i=0; i<rsp.length(); i++){
answer = answer.concat(map.get(array_rsp[i]));
}
return answer;
}
}
배운점
import java.util.Arrays;
import java.util.stream.Collectors;
class Solution {
public String solution(String rsp) {
return Arrays.stream(rsp.split(""))
.map(s -> s.equals("2") ? "0" : s.equals("0") ? "5" : "2")
.collect(Collectors.joining());
}
}
다른 사람이 쓴 코드를 보면 문자열을 스트림으로 변환후 매핑한다음 스트림 안에 변환된 문자들을 하나의 문자열로 결합후 반환한다.
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();
}
}
또 다른 사람이 쓴 코드를 보면 append함수를 사용하려고 StringBuilder 객체로 만든다음 반복문안에서 switch문으로 각 문자열에 해당할 때마다 특정 문자열을 append한다.
Leave a comment