프로그래머스 Level1 - 수박수박수박...

Kim Jelly·2020년 9월 24일
1

집에와서 추가로 풀어보는 Level1 문제!

Level1 - 수박수박수박수박....

<문제>

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

<제한 조건>

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

<입출력 예시>

❗❓<문제 풀이 과정>

  • 같은 패턴을 유지하는 --> 반복문을 사용하자
  • 반복적으로 문자열을 붙일 때 해당 문자열에 마지막이 '수'인지 '박'인지에 따라서 다르게 글자를 합쳐야 한다. --> if문을 활용해보자.
  • 문자열에 마지막 인덱스의 값을 반환하는 메소드?, 함수?를 찾아보자
function solution(n) {
    // let su = '수';
    // let park = '박';
    let watermelon = '';
    for (let i = 0; i < n; i++ ) {
        if (watermelon === '' || watermelon.endsWith('박') ) {
            watermelon = watermelon + '수';
        } else {
            watermelon = watermelon + '박';
        }
    }
    return watermelon;
}

solution(5);

str.endsWith(searchString,[, length]) : 문자열에서 마지막에 끝나는 특정 문자열에 대해 확인 가능, true, false로 값을 반환한다.

<다른 사람 문제 풀이>

function solution(n) {
    let answer     = '';
    let watermelon = '수박';    
    if(n % 2 === 0) return answer = watermelon.repeat(n / 2);   
    // n이 짝수면 '수박'을 n의 몫만큼 더한다.
    return answer = watermelon.repeat(n / 2) + '수';
    // n이 홀수면 '수박'의 n의 몫만큼에 +'수'
}

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

solution(4)

str.repeat(count) : 문자열을 주어진 횟수 만큼 반복해서 붙인 새로운 문자열을 반환한다.

<문제 풀이 후기>

생각보다 문제를 금방 풀어서 매우 좋아했지만, 다른 분들의 문제풀이를 보고 좌절했다.
나는 왜 문제를 보면서 '짝수','홀수'라는 걸 생각하지 못했을까?
아직 무언가 수학적? 으로 생각하는게 부족한가 보다..
문제를 풀긴했지만 무언가 찜찜한 느낌😂

그래도 스스로 문제를 풀었다는 것 자체로 만족하기로 했다.
일단 나름 긴 코드를 스스로 작성해 본 것에 뿌듯😁

출처

프로그래머스 - 수박수박수박...
바닐라코딩 - prep guide

profile
꾸준히, 오래도록

1개의 댓글

comment-user-thumbnail
2024년 4월 3일

이해가 쏙쏙 됩니다!!

답글 달기