📌URL
https://school.programmers.co.kr/learn/courses/30/lessons/12922
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
🔎풀이
class Solution {
public String solution(int n) {
StringBuilder answer = new StringBuilder();
for (int i = 0; i < n; i++) {
if (i % 2 != 0) {
answer.append("박");
} else {
answer.append("수");
}
}
return answer.toString();
}
}
n만큼 for문을 돌려 수 + 박이 반복하여 append 되도록 했다.
처음에 아래와 같이 식을 만들었는데 코드를 실행해보니 시간이 너무 오래걸렸다.
class Solution {
public String solution(int n) {
String answer = "";
for(int i = 0; i < n; i++) {
if(i%2 != 0) {
answer += "박";
}else {
answer += "수";
}
}
return answer;
}
}
answer에 수와 박을 더해주는 과정에서 시간이 오래 걸리는 것 같아 찾아보니 answer은 String형(불변)이기 때문에
- answer에 "수"라는 문자열이 생성
- "박"을 추가하기 위해 "수" 문자열과 "박" 문자열을 합치면서 새로운 문자열 "수박"이 생성
- "수박" 문자열과 "수" 문자열을 합쳐서 "수박수"라는 새로운 문자열이 생성
위의 과정으로 수행을 하기 때문에 시간이 오래 걸리는 것이었다.
반면 StringBuilder는 내부 버퍼를 이용하여 가변적인 문자열을 만들기 때문에 효율적으로 처리하게 된다.
- 반복문을 통해 "수" 또는 "박"을 append 메서드를 사용하여 내부 버퍼에 추가
- 내부 버퍼는 문자열을 효율적으로 조작하여 필요한 만큼 크기를 조절하며 문자열을 더함
'👨💻 Coding Test' 카테고리의 다른 글
[ 프로그래머스 / Java] #12910_나누어 떨어지는 숫자 배열 (0) | 2023.11.29 |
---|---|
[ 프로그래머스 / Java] #12903_가운데 글자 가져오기 (0) | 2023.11.29 |
[ 프로그래머스 / Java] #12912_두 정수 사이의 합 (0) | 2023.11.24 |
[ 프로그래머스 / Java] #12948_핸드폰 번호 가리기 (0) | 2023.11.24 |
[ 프로그래머스 / Java ] #12943_콜라츠 추측 (0) | 2023.11.24 |