정답 1
이번 문제는 생각보다 풀이에 대한 아이디어가 잘 떠오르지 않았다. 생각보다 고전했던 문제였다.
지금 현재 나는 숫자 타입의 배열에 대해서는 어느정도 이해를 하고 문제 답안에 대한 구상을 수월하게 하지만 String, char[] 배열 관련해서는 너무나도 고전하고 있다.
해서 정답 1의 나의 답안은 상당히 처참했다. 그래도 열심히 로직을 구성해보았다.
class Solution {
public String solution(String my_string, int n) {
char[] arr = my_string.toCharArray();
String[] answer = new String[my_string.length()];
for(int i = 0; i < my_string.length(); i++) {
String target = String.valueOf(arr[i]);
String make = "";
for(int j = 0; j < n; j++) {
make += target;
}
answer[i] = make;
}
String result = String.join("", answer);
return result;
}
}
코드가 너무 길고 깔끔하지 못하다. 우아한 멋있는 코드가 아니다..
하지마 정답은 맞다.
일전에 선행된 문제들중 String 을 가지고 놀았던 문제가 있었다. 나는 거기서 StringBuilder 라는것을 사용해 보았다.
그리고서는 글 마지막에 StringBuilder 는 String 값을 가지고 놀기에 최고라고 언급을 하였다. 그것은 여기서도 통하는 말이었다.
정답 2에서 살펴보도록 하자.
정답 2
class Solution {
public String solution(String my_string, int n) {
StringBuilder sb = new StringBuilder();
for(char c : my_string.toCharArray()){
sb.append((c + "").repeat(n));
}
return sb.toString();
}
}
StringBuilder 를 사용하지 코드가 너무도 깔끔해졌다.
먼저 StringBuilder 는 append() 메서드를 사용해서 원하는 String 값을 붙여넣을 수 있다.
StringBuilder sb = new StringBuilder();
sb.append("abc");
sb.append("def");
sb.append("ghi");
// 표준출력시 : abcdefghi 이렇게 출력됨.
정답 2 에서 sb.append((c + "")) 를 한 이유는 char 타입인 c 를 String 값으로 바꿔주기 위한 것이다. 그리고 StringBuilder 의 메서드인 repeat(n) 을 통해 원하는 만큼 append() 메서드를 반복시켰다. 이렇게 되면 문자를 원하는 만큼 반복시키는 결과가 나온다.
도출된 결과를 toString() 을 통해 StringBuilder -> String 타입으로 변경해준뒤 반환하였다.
StringBuilder, 꼭 잊지말고 String 관련 문제에서 기억해 사용해보도록 하자.
'프로그래머스 - 코딩테스트' 카테고리의 다른 글
[Java][프로그래머스] - LVL.0 순서쌍의 개수 (0) | 2023.01.26 |
---|---|
[Java][프로그래머스] - LVL.0 중복된 숫자 개수 (0) | 2023.01.26 |
[Java][프로그래머스] - LVL.0 최댓값 만들기(1) (0) | 2023.01.25 |
[Java][프로그래머스] - LVL.0 배열 자르기 (0) | 2023.01.24 |
[Java][프로그래머스] - LVL.0 머쓱이보다 키 큰 사람 (0) | 2023.01.24 |