Algorithm

[알고리즘] 수박수박수박수박수박수? 문제 풀이

montmer27 2026. 1. 28. 21:01

문제 요구사항

문제 설명

길이가 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