| 문제
문자열 my_string과 정수 n이 매개변수로 주어질 때,
my_string에 들어있는 각 문자를 n만큼 반복한 문자열을 return 하도록
solution함수를 완성해 보세요.
| 제한 사항
- 2 ≤ my_string의 길이 ≤ 5
- 2 ≤ n ≤ 10
- "my_string"은 영어 대소문자로 이루어져 있습니다.
| 입출력 예
my_string | n | result |
hello | 3 | hhheeellllllooo |
| 풀이 1
가상 심플하게 구성된 코드입니다.
문자열을 문자열 배열로 쪼개고, answer 변수에 반복하여 += 해주었습니다.
public String solution01(String my_string, int n) {
String answer = "";
String[] arr = my_string.split("");
for(int i = 0 ; i < arr.length ;i++){
answer += arr[i].repeat(n);
}
return answer;
}
| 풀이 2
my_string을 자르는 방식은 동일하지만, StringBuilder를 사용했습니다.
StringBuilder의 append 메소드를 사용하면
문자열에 복합대입연산을 하는 것보다 상대적으로 속도가 빠른 편입니다.
public String solution02(String my_string, int n) {
StringBuilder sb = new StringBuilder();
String[] arr = my_string.split("");
for(int i = 0 ; i < arr.length ;i++){
sb.append(arr[i].repeat(n));
}
return sb.toString();
}
| 해설
문자 반복 출력하기 문제를 풀기 위해서는 우선 문자열을 배열로 만들어야 합니다.
Java에서 문자열을 배열로 만들기 위해서는 2가지 정도의 방법이 있는데요.
split을 사용하는 방법과 toCharArray를 사용하는 방법입니다.
split을 사용하면 String형태의 데이터를 String[] 즉, 문자열 배열로 쪼개주고,
toCharArray를 사용하면 String을 char[] 즉, 문자 배열로 잘라줍니다.
char[]이든, String[]이든 여기서는 단순 조회만 할 거라 문제가 되지는 않아요.
그러나 풀이에서는 toCharArray를 사용하지 않았습니다.
왜냐면 제가 작성한 풀이에서 배열을 구성하는 방법만 toCharArray로 바꾸었을 뿐인데
0.12ms정도 걸렸던 케이스가 8.01ms까지 느려졌기 때문이에요.
아주 단순하게 수학적으로만 계산하면 약 60배 정도 차이가 나게 됩니다.
"hello"처럼 짧은 단어도 이렇게 차이가 나는데 더 긴 문자열이 주어지면 어떻게 될지 무섭기까지 하네요.
toCharArray는 split이 기억나지 않을 때만 쓰기로 해요~
'개발 > 개발 공부' 카테고리의 다른 글
[프로그래머스] 코딩테스트 입문 : 각도기 (0) | 2024.09.06 |
---|---|
[프로그래머스] 코딩테스트 입문 : 특정 문자 제거하기 (0) | 2024.09.05 |
[프로그래머스] 코딩테스트 입문 : 짝수 홀수 개수 (12) | 2024.09.04 |
[프로그래머스] 코딩테스트 입문 : 직각삼각형 출력하기 (별찍기) (2) | 2024.09.03 |
[프로그래머스] 코딩테스트 입문 : 문자열 뒤집기 (0) | 2024.09.02 |
댓글