1-1. 내가 푼 풀이
class Solution {
public String solution(String rsp) {
StringBuilder sb = new StringBuilder();
for(char c: rsp.toCharArray()) {
if(c == (char)(2+'0')) sb.append('0');
if(c == (char)(0+'0')) sb.append('5');
if(c == (char)(5+'0')) sb.append('2');
}
return sb.toString();
}
}
1-2. 삼항연산자 이용
- 삼항연산자 할 수 있으면 삼항연산자 생각하기!!!!
class Solution {
public String solution(String rsp) {
StringBuilder sb = new StringBuilder();
for(char c: rsp.toCharArray()) {
sb.append(c == '2' ? 0 : c == '0' ? 5 : 2);
}
return sb.toString();
}
}
2. char형이 아닌 int 형으로 foreach
char형이 아니라 int형으로 변환해서 - '0' 아니면 - 48 으로
class Solution {
public String solution(String rsp) {
String answer = "";
for(int i: rsp.toCharArray()) {
if(i-'0' == 2) answer += 0;
else if(i-48 == 0) answer += 5;
else answer += 2;
}
return answer;
}
}
3. HashMap 사용
- str.substring(startidx, endidx), map은 key로 value를 가져올 수 있다.
import java.util.HashMap;
class Solution {
public String solution(String rsp) {
HashMap<String, String> winNum = new HashMap<>();
winNum.put("2", "0");
winNum.put("0", "5");
winNum.put("5", "2");
StringBuilder sb = new StringBuilder();
for(int i=0;i<rsp.length();i++) {
sb.append(winNum.get(rsp.substring(i, i+1)));
}
return sb.toString();
}
}
4. 객체 구조화
class Solution {
public String solution(String rsp) {
String answer= "";
String[] splited = rsp.split(""); // ["2", "0", "5"]
for(String s : splited) {
answer += cal(s);
}
return answer;
}
private String cal(String str) {
String result = "";
switch(str) {
case "2" : result = "0"; break;
case "0" : result = "5"; break;
case "5" : result = "2"; break;
}
return result;
}
}
- if else if 문, 객체 구조로 하면 조금더 시간이 걸리긴 한다.
- 역시 HashMap이 빠르긴 하다.
- charAt이나, for문으로 String을 char형으로 바꾸는 것만 생각했는데
- split으로 문자열을 잘라서 String 배열로 만들 수 있다는 것을 알게 되었다.
'algorithm > Programmers' 카테고리의 다른 글
[JAVA] 배열 회전시키기 (0) | 2023.01.20 |
---|---|
[JAVA] 점의 위치 구하기 (0) | 2023.01.19 |
[JAVA] 진료 순서 정하기 (0) | 2023.01.14 |
[JAVA] 순서쌍의 개수(약수의 개수 구하는 알고리즘) (0) | 2023.01.14 |
[JAVA] 외계행성의 나이 (0) | 2023.01.14 |