JS/코테
JS, 프로그래머스 - 수박수박수박수박수박수?
Hyeon_E
2024. 3. 27. 23:39
여러 다른 방법으로 코테를 풀고 있는데 여러가지 방법으로 문제를 풀어보자라는 취지로 글을 쓰게 됨
원래 코테는 블로그을 안썼는데(코테에 필요한 정보만 업로드) 까먹게 되고 정리가 필요하겠다는 생각이 들어 갱신!!
https://school.programmers.co.kr/learn/courses/30/lessons/12922
문제는 간단하게 "수박수박수박수...."와 같은 패턴을 유지하는 문자열을 리턴하고 홀수일 경우 "수"로 짝수일경우 "박"으로 끝나게 하는 것이 핵심
처음에는 반복문을 이용하여 간단하게 문제를 품
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를 사용하는 방안으로 가봐야할 듯