성장일기

내가 보려고 정리하는 공부기록

코딩테스트/프로그래머스 Lv.0

[프로그래머스] 문자 리스트를 문자열로 변환하기 - JAVA

와나나나 2023. 7. 2. 23:40
728x90

프로그래머스 코딩 기초 트레이닝 DAY 3 - (2)

출처 - https://school.programmers.co.kr/learn/courses/30/lessons/181941

 

프로그래머스

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

programmers.co.kr

문제 |  문자들이 담겨있는 배열 arr가 주어집니다. arr의 원소들을 순서대로 이어 붙인 문자열을 return 하는 solution함수를 작성해 주세요.

입력 #1 | ["a","b","c"]

출력 #1 | "abc"


>> 풀이 <<

새로운 String을 만들고, for문을 이용하여 arr의 String형 원소들을 더해가는 방식으로 구현하려고 한다. 이 과정에서는 특별한 메소드가 필요하지 않았다. 

class Solution {
    public String solution(String[] arr) {
        String answer = "";
        
        for (String str : arr) {
            answer += str;
        }
        return answer;
    }
}

 

위 코드로 답을 도출하는 데에는 문제가 없었지만, 더해야하는 문자열이 많아질 경우에는 비효율적이다. String은 객체이며 변경이 불가능하므로 문자열끼리 연결을 할 때마다 새 문자열이 생성된다. 즉, 메모리를 많이 잡아먹게 된다는 뜻이다. 

그래서 +로 문자열끼리 연결하는 것보다 StringBuilder를 이용해 "변경 가능한 문자열" 을 만들어주는 게 효율적일지도 모른다. StringBuilder 객체를 생성하고 append() 인자를 이용해 문자열을 붙여나간다.

 

class Solution {
    public String solution(String[] arr) {
        StringBuilder sb = new StringBuilder();
        for (String s: arr) {
            sb.append(s);
        }
        return sb.toString();
    }
}

출력시에는 toString을 이용해 string타입으로 바꿔준다. 많은 문자열을 이어야 할 때 이용하면 좋을 거 같다.