문제 요구사항
문제 설명
길이가 n이고, "수박수박수박수...."와 같은 패턴을 유지하는 문자열을 리턴하는 함수, solution을 완성하세요. 예를들어 n이 4이면 "수박수박"을 리턴하고 3이라면 "수박수"를 리턴하면 됩니다.
제한 조건- n은 길이 10,000이하인 자연수입니다.
풀이
class Solution {
public String solution(int n) {
StringBuilder answer = new StringBuilder();
//"수"부터 입력
answer.append("수");
//n-1번동안
for(int i = 1;i<n;i++){
//현재 문자열의 길이가 짝수이면 "수", 홀수이면 "박"을 뒤에 붙임
if(answer.length() % 2 == 0) answer.append("수");
else answer.append("박");
}
return answer.toString();
}
}
모범답안
class Solution {
public String solution(int n) {
StringBuilder answer = new StringBuilder();
for (int i = 1; i <= n; i++) {
answer.append(i%2==0?"박":"수");
}
return answer.toString();
}
}
실패 요인
인사이트
Java에서 String은 불변 객체이다.
따라서 concat() 메서드는 원본 문자열을 변경하지 않고, 새로운 문자열을 반환한다.
문자열이 반복될 때는 StringBuilder를 사용하는 것이 메모리/성능 면에서 효율적이다.
새로운 문자열 객체를 생성하지 않기 때문이다.
StringBuilder는 import 없이 사용할 수 있지만(java.lang에 포함), endsWith() 등 일부 String 메서드를 사용할 수 없다.
문제 출처
https://school.programmers.co.kr/learn/courses/30/lessons/12922
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
'Algorithm' 카테고리의 다른 글
| [알고리즘] 문자열 내림차순으로 배치하기 (0) | 2026.01.29 |
|---|---|
| [알고리즘] 약수의 개수와 덧셈 (0) | 2026.01.29 |
| [알고리즘] 내적 구하기 (0) | 2026.01.28 |
| [알고리즘] 콜라츠 추측 (0) | 2026.01.22 |
| [알고리즘] 두 정수 사이의 합 (0) | 2026.01.21 |