개발일기/TIL(Since24.04.19)

프로그래머스 문자열 섞기

w.llama 2024. 8. 28. 20:03

문제

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

풀이 1 (StringBuilder 사용)

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

StringBuilder를 사용하면 이점

  • 성능 향상
    StringBuilder는 가변객체이므로 문자열을 여러번 수정할때 사용하게되면 새로운 객체를 생성하지 않아도됨
  • 효율적인 문자열 연결
    String을 사용하여 += 연산하는것보다 append()메소드를 사용하는게 더빠름
  • 메모리 효율성
    내부적으로 가변크기의 배열을 사용하여 문자열을 저장하기때문에 메모리를 더 효율적으로 사용할수있음

StringBuilder를 사용했을때 단점

  • 메모리 오버헤드
    매우 작은 문자열 조작의 경우,  StringBuilder 생성 자체가 작은 오버헤드를 발생시킬 수 잇음
  • 스레드 안정성
    StringBuilder는 스레드에 안전하지 않아 멀티스레드 환경에서 사용할 경우 동기화 문제가 발생할수 잇음 
    (StringBuffer를 사용해야하지만, 성능이 조금더 낮음)
  • 최종 String 변환이 필요함
    최종 결과를 String 으로 사용하려면 toString()메소드를 호출해야함

풀이 2 

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));
            answer += String.valueOf(str2.charAt(i));
        }

        return answer;
    }
}

String을 사용하면 이점

  • 코드의 단순화

String을 사용했을때 단점

  • 성능과 효율성이 StringBuiler방식보다 떨어짐