[ 프로그래머스 Lv.0 | Java ] 문자열 섞기

dokim·2023년 8월 28일
0
post-thumbnail

🏷️문자열 섞기


1. 해결 전략

  • .charAt()을 사용하여 문자를 추출했습니다.
  • 문자열 str1str2의 길이가 같으므로 for 루프를 순회하며 각각의 문자열의 문자 하나씩 문자열 answer에 연산을 하여 저장합니다.

2. 구현코드

✅ String.valueOf()

class Solution {
    public String solution(String str1, String str2) {
        
        String answer = "";
        for(int i = 0; i < str1.length(); i++){
            answer += String.valueOf(str1.charAt(i)) + str2.charAt(i);
        }
        
        return answer;
    }
}

3. 시간 & 공간 복잡도

  • 시간 복잡도 : O(n)
    - > str1.length() 만큼 반복문을 실행하여 시간 복잡도는 O(n)입니다.
  • 공간 복잡도 : O(n)
    - > 결과 문자열 answer에 문자열을 추가할 때마다 새로운 문자열이 생성되어 메모리에 쌓이므로 최종적으로 결과 문자열의 길이만큼의 공간이 사용됩니다. 따라서 공간 복잡도도 O(n)입니다

4. Refactoring

  • 이전 문제에서 이해한 StringBuilder 을 사용하여 문자열 메모리 사용을 최소화 하였습니다.
  • 다른 코드를 보고 .split().toCharArray()를 사용하여 풀어봤습니다. 형식이 비슷하기 때문에 금방 풀 수 있었습니다.

✅ .split() 사용

class Solution {
    public String solution(String str1, String str2) {
    
        StringBuilder sb = new StringBuilder();

        String[] str1arr = str1.split("");
        String[] str2arr = str2.split("");
        
        for (int i=0; i < str1.length(); i++) {
            answer += str1arr[i]+str2arr[i];
        }

        return sb.toString();
    }
}

✅ .toCharArray() 사용

class Solution {
    public String solution(String str1, String str2) {
    
    	StringBuilder sb = new StringBuilder();
        
        char[] chars1 = str1.toCharArray();
        char[] chars2 = str2.toCharArray();

        for (int i=0; i<chars1.length; i++) {
            sb.append(chars1[i]).append(chars2[i]);
        }

        return sb.toString();
    }
}

5. 후기 및 반성

  • 제가 해결한 방법과 다른 분들의 코드를 비교를 해봤습니다. 결과적으로 코드의 형식은 비슷하나 다른 메소드를 활용하여 풀 수 있다는 것이 재미있었습니다.
  • 다음에 charAt()와 같은 메소드를 사용하기전에 다른 메소드 또한 생각해보려고 합니다.

0개의 댓글