낭 만 당

프로그래머스 Lv1 수박수박수~ 문제 풀기와 코드의 변화 본문

Programming Record

프로그래머스 Lv1 수박수박수~ 문제 풀기와 코드의 변화

낭만알파카 2025. 7. 16. 16:13

프로그래머스에서 자주 등장하는 문자열 반복 문제 중 하나인 “수박수박수박…” 패턴 만들기 문제를 풀면서, 코드가 어떻게 발전해 나갈 수 있는지, 그리고 그 과정에서 기술적으로 어떤 학습을 했는지를 정리해보고자 한다.

 

문제 설명

 

정수 n이 주어졌을 때, "수박수박수박..." 패턴을 길이 n만큼 잘라서 문자열로 반환하는 문제다.

 

예를 들어, n = 3이라면 "수박수", n = 4라면 "수박수박"이 되어야 한다.

 

 

처음에는 문제를 그대로 해석해 반복문으로 해결했다. 아래는 그 코드이다.

function solution(n) {
    var answer = '';
    for (var i = 0; i < n; i++) {
        if (i % 2 === 0) {
            answer += '수';
        } else {
            answer += '박';
        }
    }
    return answer;
}

 

이 방식은 i가 짝수일 때 "수", 홀수일 때 "박"을 붙이는 전형적인 문자열 누적 방식이다.

 

처음 이 풀이를 떠올렸을 때는 "조건문과 반복문을 잘 활용하면 문자열도 쉽게 다룰 수 있구나." 하는 자신감을 느꼈다. 간단한 로직이지만 문제 해결 자체가 주는 즐거움이 있었다.

 

문제를 다시 바라보던 중 "수박"이라는 "반복 가능한 단위가 존재한다."는 점에 착안했다. 이 패턴을 "수박".repeat(반복횟수)를 이용해 생성하고, 이후 .slice(0, n)으로 원하는 길이만큼 자르면 더 간결하게 해결할 수 있었다.

 

function solution(n) {
    return "수박".repeat(Math.ceil(n / 2)).slice(0, n);
}

이 풀이를 작성하면서 다음과 같은 것들을 새롭게 익혔다:

 

1  .repeat(n) 메서드를 사용하면 문자열을 반복해서 만들 수 있다는 것

2  Math.ceil(n / 2)를 통해 필요한 반복 횟수를 정확히 계산할 수 있다는 것

3  .slice(0, n)으로 원하는 길이만큼 자르면 문자열 길이를 보정할 수 있다는 것

 

이 풀이 방식은 처음보다 훨씬 짧고 선언적이며, 코드를 읽는 사람에게도 더 직관적이다.

 

 

처음에는 for 루프와 if 조건문이 전부라고 생각했지만, 자바스크립트의 문자열 메서드를 적극적으로 활용하면 문제를 훨씬 우아하게 풀 수 있다는 것을 느꼈다. 또한, 문제의 본질을 추상화해서 “수박이라는 반복 단위를 얼마나 붙여야 할까?“로 전환하는 사고가 중요하다는 걸 배웠다. 이 문제 하나만으로도 로직 구현 → 패턴 추출 → 내장 함수 활용 → 최적화라는 작은 단계를 경험해볼 수 있었고, 앞으로 문제를 풀 때도 “더 좋은 방식은 없을까?”라는 질문을 자연스럽게 던질 수 있게 되었다.

 

작은 문자열 반복 문제 하나였지만, 반복문 중심 사고에서 벗어나 자바스크립트의 기능을 적극적으로 활용하는 경험을 하게 되었다. 앞으로도 문제를 풀 때 단순히 정답을 내는 것에서 끝나지 않고, 다양한 접근 방식을 시도해보며 코드의 발전 과정을 기록해보는 습관을 들이고자 한다...!!

파이팅