Lv. 1 - 수박수박수박수박수박수? 풀이과정
문제 설명
길이가 n이고, “수박수박수박수….”와 같은 패턴을 유지하는 문자열을 리턴하는 함수, solution
을 완성하세요. 예를들어 n이 4이면 “수박수박”을 리턴하고 3이라면 “수박수”를 리턴하면 됩니다.
제한사항
- n은 길이 10,000이하인 자연수입니다.
입출력 예
n | return |
---|---|
3 | “수박수” |
4 | “수박수박” |
문제 풀이
const solution = n => {
let arr = [];
for(i = 0; i < n; i++){
arr.push(i % 2 === 0 ? '수' : '박');
}
return arr.join('');
}
함수 선언
- 화살표 함수를 사용하여
n
를 매개변수로 받는다.
풀이
- 배열에 저장하기 위해
arr
변수를 배열로 선언 (문자열로 했어도 되었는데, 배열 문제만 풀다보니.. 나도모르게 이렇게 선언하게 되었다.) -
for
문을 사용하여 매개변수로 전달받은 값 만큼 순회하며 삼항연산자로 짝,홀수 에 따라 “수”,”박”을 배열에 push했다. - 마지막으로 문자열로 반환하기 위해
join()
을 사용하여 리턴함. - 결과적으로 보면 굳이 배열로 안해도 되었는데, 반복되는 배열 문제풀이 속 무의식적으로 사용한 코드..
결과 반환
-
n = 3
대입하면 수,박,수 = “수박수”를 리턴함 -
n = 4
대입하면 수,박,수,박 = “수박수박”을 리턴함
실행
-
solution(3)
실행하면 “수박수” 출력 -
solution(4)
실행하면 “수박수박” 출력
다른 사람의 풀이 참고
repeat
을 사용한 문제 풀이가 가장 인상적이었다. repeat
은 주어진 수만큼 반복해서 붙인 새로운 문자열을 반복해주는데, 대부분 이 함수를 사용한 풀이과정이 많았다. 하지만 repeat
이란 함수를 알게되어 또 하나 배웠다는 생각으로 글을 마무리해본다.
// [2명] repeat, slice 함수를 사용한 풀이 과정
// 수박을 n만큼 반복해서 나열하고 slice로 그 길이만큼 자른 풀이과정 (대단..!)
const waterMelon = n => "수박".repeat(n).slice(0,n);
링크
- 문제 링크: 문제 링크
- Git: rarrit github
출처: 프로그래머스 코딩 테스트 연습, https://school.programmers.co.kr/learn/challenges