JS/코테

JS, 프로그래머스 - 수박수박수박수박수박수?

Hyeon_E 2024. 3. 27. 23:39

여러 다른 방법으로 코테를 풀고 있는데 여러가지 방법으로 문제를 풀어보자라는 취지로 글을 쓰게 됨

원래 코테는 블로그을 안썼는데(코테에 필요한 정보만 업로드) 까먹게 되고 정리가 필요하겠다는 생각이 들어 갱신!!

 

https://school.programmers.co.kr/learn/courses/30/lessons/12922  

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

문제는 간단하게 "수박수박수박수...."와 같은 패턴을 유지하는 문자열을 리턴하고 홀수일 경우 "수"로 짝수일경우 "박"으로 끝나게 하는 것이 핵심

 

처음에는 반복문을 이용하여 간단하게 문제를 품

function solution(n) {
    const s = ['수', '박']
    let str = ""

    for(let i=0; i<n; i++){
        str += s[i%2]
    }
    return str
}

배열을 만들어 반복문을 돌려 홀짝에 맞춰 문자열에 추가하는 방식인데 반복문으로 돌리다보니 시간을 많이 잡아먹겠는데...? 라는 생각이 들어 다른 방법이 없나 생각해 보게 됨

 

비교 분석을 위해 메모장에 적어 놓은 테스트 결과를 보면 0.10ms, 0.38ms - 33.4MB, 33.9MB로 앞에는 시간초를 뒤에는 메모리이며 앞 숫자는 테스트에서 제일 작은 수를 뒤에는 제일 큰수임

 

두번째 repeat를 사용하여 푼 방법

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

메모리양은 비슷했지만 최대가 33.5MB로 최대값이 비교적 낮았고 시간은 0.03ms 확실히 작다는 것을 알 수 있음

 

😉🤔

역시 코테에 반복문은 정말 좋지 못하다는 것을 다시 한번 느낌

최대한 반복문이 아닌 다른 방법이 있다면 방안을 마련하는것이 좋아 보임

이렇게 반복되는 패턴을 유지하는 경우에는 앞으로는 repeat를 사용하는 방안으로 가봐야할 듯