| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 | 31 |
- pccp
- 자바스크립트
- #유데미 #udemy #웅진씽크빅 #스나이퍼팩토리 #인사이드아웃 #미래내일일경험 #프로젝트캠프 #부트캠프 #react #next.js #프론트엔드개발자양성과정 #개발자교육과정
- 타입스크립트
- 내밥줄지켜
- 블레이버스
- 파킨슨병
- 밀러컬럼
- Next
- react
- 2026
- 회사
- 개발자
- 프로그래머스
- 밥줄지키기프로젝트
- frontend
- 웹개발
- 백엔드
- AI에게서 살아남기
- 새복많
- 개발
- js
- Web
- 신입
- javascript
- 코딩테스트
- 코딩
- 30대까지이루기
- 프로그래밍
- 프론트엔드
- Today
- Total
낭 만 당
프로그래머스 Lv1 수박수박수~ 문제 풀기와 코드의 변화 본문
프로그래머스에서 자주 등장하는 문자열 반복 문제 중 하나인 “수박수박수박…” 패턴 만들기 문제를 풀면서, 코드가 어떻게 발전해 나갈 수 있는지, 그리고 그 과정에서 기술적으로 어떤 학습을 했는지를 정리해보고자 한다.
문제 설명
정수 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 조건문이 전부라고 생각했지만, 자바스크립트의 문자열 메서드를 적극적으로 활용하면 문제를 훨씬 우아하게 풀 수 있다는 것을 느꼈다. 또한, 문제의 본질을 추상화해서 “수박이라는 반복 단위를 얼마나 붙여야 할까?“로 전환하는 사고가 중요하다는 걸 배웠다. 이 문제 하나만으로도 로직 구현 → 패턴 추출 → 내장 함수 활용 → 최적화라는 작은 단계를 경험해볼 수 있었고, 앞으로 문제를 풀 때도 “더 좋은 방식은 없을까?”라는 질문을 자연스럽게 던질 수 있게 되었다.
작은 문자열 반복 문제 하나였지만, 반복문 중심 사고에서 벗어나 자바스크립트의 기능을 적극적으로 활용하는 경험을 하게 되었다. 앞으로도 문제를 풀 때 단순히 정답을 내는 것에서 끝나지 않고, 다양한 접근 방식을 시도해보며 코드의 발전 과정을 기록해보는 습관을 들이고자 한다...!!
파이팅
'Programming Record' 카테고리의 다른 글
| [파킨슨밸런스] 서울대병원 파킨슨병 환자를 위한 운동 추적 어플 개발 (5) | 2025.08.09 |
|---|---|
| Nest.js로 가는 길에 Express.js 먼저 맛보기 (3) | 2025.07.19 |
| 프로그래머스 Lv 1 - 하샤드 수 (JavaScript) (1) | 2025.07.07 |
| 웹 성능 최적화 기법: chapter3 웹 사이트 성능을 개선하는 기본적인 방법 (1) | 2024.11.30 |
| 프로그래머스 Lv:0 최빈값 구하기 (4) | 2024.11.26 |