:ledger: 문제 설명

길이가 n이고, “수박수박수박수….”와 같은 패턴을 유지하는 문자열을 리턴하는 함수, solution을 완성하세요. 예를들어 n이 4이면 “수박수박”을 리턴하고 3이라면 “수박수”를 리턴하면 됩니다.

:one: 제한사항

  • n은 길이 10,000이하인 자연수입니다.

:two: 입출력 예

n return
3 “수박수”
4 “수박수박”

:ledger: 문제 풀이

const solution = n => {
  let arr = [];
  for(i = 0; i < n; i++){
      arr.push(i % 2 === 0 ? '' : '');
  }
  return arr.join('');
}

:one: 함수 선언

  • 화살표 함수를 사용하여 n를 매개변수로 받는다.

:two: 풀이

  • 배열에 저장하기 위해 arr 변수를 배열로 선언 (문자열로 했어도 되었는데, 배열 문제만 풀다보니.. 나도모르게 이렇게 선언하게 되었다.)
  • for문을 사용하여 매개변수로 전달받은 값 만큼 순회하며 삼항연산자로 짝,홀수 에 따라 “수”,”박”을 배열에 push했다.
  • 마지막으로 문자열로 반환하기 위해 join()을 사용하여 리턴함.
  • 결과적으로 보면 굳이 배열로 안해도 되었는데, 반복되는 배열 문제풀이 속 무의식적으로 사용한 코드..

:three: 결과 반환

  • n = 3 대입하면 수,박,수 = “수박수”를 리턴함
  • n = 4 대입하면 수,박,수,박 = “수박수박”을 리턴함

:four: 실행

  • solution(3) 실행하면 “수박수” 출력
  • solution(4) 실행하면 “수박수박” 출력

:fire: 다른 사람의 풀이 참고

repeat을 사용한 문제 풀이가 가장 인상적이었다. repeat은 주어진 수만큼 반복해서 붙인 새로운 문자열을 반복해주는데, 대부분 이 함수를 사용한 풀이과정이 많았다. 하지만 repeat이란 함수를 알게되어 또 하나 배웠다는 생각으로 글을 마무리해본다.

// [2명] repeat, slice 함수를 사용한 풀이 과정
// 수박을 n만큼 반복해서 나열하고 slice로 그 길이만큼 자른 풀이과정 (대단..!)
const waterMelon = n => "수박".repeat(n).slice(0,n);

출처: 프로그래머스 코딩 테스트 연습, https://school.programmers.co.kr/learn/challenges