문제 설명
가위는 2 바위는 0 보는 5로 표현합니다. 가위 바위 보를 내는 순서대로 나타낸 문자열 rsp가 매개변수로 주어질 때, rsp에 저장된 가위 바위 보를 모두 이기는 경우를 순서대로 나타낸 문자열을 return하도록 solution 함수를 완성해보세요.
제한사항
- 0 < rsp의 길이 ≤ 100
- rsp와 길이가 같은 문자열을 return 합니다.
- rsp는 숫자 0, 2, 5로 이루어져 있습니다.
입출력 예
입출력 설명
입출력 예 #1
- "2"는 가위이므로 바위를 나타내는 "0"을 return 합니다.
입출력 예 #2
- "205"는 순서대로 가위, 바위, 보이고 이를 모두 이기려면 바위, 보, 가위를 순서대로 내야하므로 “052”를 return합니다.
코드
class Solution {
public String solution(String rsp) {
String answer = "";
char[] rsp_array = rsp.toCharArray(); // 문자열을 문자형배열로 변환
for(int i=0; i<rsp_array.length; i++) { // rsp_array 길이만큼 반복
if(rsp_array[i] == '0') { // 바위일 경우
answer += '5'; // answer에 문자 5 추가
} else if(rsp_array[i] == '2') { // 가위일 경우
answer += '0'; // answer에 문자 0 추가
} else if(rsp_array[i] == '5') { // 보일 경우
answer += '2'; // answer에 문자 2 추가
}
}
return answer;
}
}
풀이
String rsp를 문자형배열로 변환하여 반복문을 이용해 배열에 있는 문자형 숫자에 따라 answer에 문자의 형태로 숫자를 추가한 후 리턴한다.
다른 코드와 풀이
아래의 코드는 다른 사람들이 작성한 것들로, 내 코드와 비교, 참고하기 위해 가져왔다.
class Solution {
public String solution(String rsp) {
StringBuilder sb = new StringBuilder();
for (int i = 0; i < rsp.length(); i++) {
if (rsp.charAt(i) == '2') {
sb.append(0);
}
if (rsp.charAt(i) == '0') {
sb.append(5);
}
if (rsp.charAt(i) == '5') {
sb.append(2);
}
}
return sb.toString();
}
}
StringBuilder를 생성 후, 반복문을 통해 rsp 문자열을 하나씩 문자로 변환 후 하나씩 비교하면서 상황에 맞는 수를 StringBuffer에 추가한다. 반복문이 끝나면 이를 문자열로 변환하여 리턴한다.
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();
}
}
들어온 가위, 바위, 보와 그에 따른 결과 값들을 HashMap을 이용해 추가해준다. substring()을 통해 rsp문자열을 잘라서 얻은 문자를 winNumbers에서 찾아 그에 맞는 value 값을 StringBuilder answer에 추가해주는 것을 rsp의 길이만큼 반복한다. 그 후 반복문이 종료되면 answer를 string으로 변환하여 반환한다.
정리
substring()
: 문자열의 특정 부분을 잘라내는 데 사용
형태
- substring(int startIndex)
- substring(int startIndex, int endIndex)
문제에서 사용한 2번째 형태의 경우, substring(2,3) 이라고 하면 2번째부터 3번째 전까지이기 때문에 2번째자리에 있는 문자를 의미한다.
'Coding Test' 카테고리의 다른 글
230922 최댓값 만들기(1) - Level 0 (0) | 2023.09.22 |
---|---|
230922 점의 위치 구하기 - Level 0 (0) | 2023.09.22 |
230921 문자열 뒤집기 - Level 0 (0) | 2023.09.21 |
230920 배열 뒤집기 - Level 0 (0) | 2023.09.20 |
230920 배열 두 배 만들기 - Level 0 (0) | 2023.09.20 |