whatisthis?

[프로그래머스] 수박수박수박수박수박수? - JavaScript 본문

ALGORITHM/PROGRAMMERS

[프로그래머스] 수박수박수박수박수박수? - JavaScript

thisisyjin 2022. 7. 10. 09:47

javascript

문제 설명

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

제한 조건

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

예시

입출력 예

n    return
3    "수박수"
4    "수박수박"

내가 작성한 코드

function solution(n) {
    var answer = '';

    for (i = 0; i < n; i++) {
        const letter = i % 2 === 0 ? '수' : '박';
        answer += letter;
    }
    return answer;
}

실행 결과

테스트 1 〉    통과 (0.15ms, 30.3MB)
테스트 2 〉    통과 (0.25ms, 30.3MB)
테스트 3 〉    통과 (0.19ms, 30.2MB)
테스트 4 〉    통과 (0.31ms, 30.1MB)
테스트 5 〉    통과 (0.25ms, 30MB)
테스트 6 〉    통과 (0.04ms, 30MB)
테스트 7 〉    통과 (0.08ms, 30MB)
테스트 8 〉    통과 (0.05ms, 30.2MB)
테스트 9 〉    통과 (0.06ms, 30.1MB)
테스트 10 〉    통과 (0.12ms, 29.8MB)
테스트 11 〉    통과 (0.06ms, 30.1MB)
테스트 12 〉    통과 (0.05ms, 30.1MB)
테스트 13 〉    통과 (0.06ms, 29.9MB)
테스트 14 〉    통과 (0.05ms, 30.2MB)
테스트 15 〉    통과 (3.01ms, 32.7MB)
테스트 16 〉    통과 (0.04ms, 29.9MB)

리팩토링

function solution(n) {
    // 짝수면 수박 * n/2
    // 홀수면 수박 * n/2 + 수
    return '수박'.repeat(n/2) + (n % 2 === 1 ? '수' : '');
}

테스트 1 〉    통과 (0.03ms, 29.6MB)
테스트 2 〉    통과 (0.03ms, 29.9MB)
테스트 3 〉    통과 (0.03ms, 30MB)
테스트 4 〉    통과 (0.03ms, 29.8MB)
테스트 5 〉    통과 (0.03ms, 29.9MB)
테스트 6 〉    통과 (0.04ms, 29.9MB)
테스트 7 〉    통과 (0.03ms, 29.9MB)
테스트 8 〉    통과 (0.03ms, 29.7MB)
테스트 9 〉    통과 (0.03ms, 30MB)
테스트 10 〉    통과 (0.03ms, 29.9MB)
테스트 11 〉    통과 (0.03ms, 30.1MB)
테스트 12 〉    통과 (0.04ms, 30MB)
테스트 13 〉    통과 (0.03ms, 30MB)
테스트 14 〉    통과 (0.03ms, 30MB)
테스트 15 〉    통과 (0.03ms, 29.9MB)
테스트 16 〉    통과 (0.03ms, 30.1MB)

앞으로 코드 짤때 최대한 for이나 if를 덜 사용하고 코드를 짜야겠다.