The journey to becoming a developer

My future is created by what I do today, not tomorrow.

Algorithms/Programmers

[프로그래머스 Level 1] 수박수박수박수박수박수? (자바스크립트)

Millie 2021. 10. 12. 09:59

Description

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

Constraints

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

My Solution

function solution(n) {
  return n % 2 === 0 ? '수박'.repeat(n / 2) : '수박'.repeat(n / 2) + '수';
}

repeat()과 삼항 연산자를 통해 간단하게 풀어보았다. 

 

Other's Solutions

아주 간단한 문제였지만, 다양한 풀이가 있었던 풀이였다. 

function solution(n) {
  return '수박'.repeat(n).substring(0, n);
}

substring을 활용했다면 이렇게 더 간결하게 풀 수도 있다.

MDN을 참고하면, substring에는 시작 인덱스를 기본적으로 전달해 줘야 하고 끝 인덱스는 옵션이다. 

The substring() method returns the part of the string between the start and end indexes, or to the end of the string.

substring() 메서드는 문자열의 시작 인덱스와 끝 인덱스 사이 또는 문자열 끝 부분을 반환한다.

const waterMelon = n => {
  return '수박'.repeat(n / 2) + (n % 2 === 1 ? '수' : '');
};
const waterMelon = n => '수박'.repeat(n).slice(0, n);

substring 대신에 비슷한 slice를 쓸 수도 있다. 

위와 같은 경우에서는 substring과 slice는 동일하게 동작하지만, 다른 경우가 있기 때문에 주의해서 써야 한다. 

function waterMelon(n) {
  var result = '';
  for (var i = 0; i < n; i++) {
    result += i % 2 == 0 ? '수' : '박';
  }
  return result;
}

for문으로 i가 짝수인 경우에는 결과에 '수'를 더해주고, 홀수인 경우에는 '박'을 더해준다. 


꼭 시간을 내서 substring, substr, slice의 공통점과 차이점을 확실히 짚고 넘어가야겠다.