길이가 n이고, "수박수박수박수...."와 같은 패턴을 유지하는 문자열을 리턴하는 함수, solution을 완성하세요. 예를들어 n이 4이면 "수박수박"을 리턴하고 3이라면 "수박수"를 리턴하면 됩니다.
function solution(n) {
let answer = '';
for(let i = 0; i < n; ++i){
answer += i % 2 ? '박' : '수';
}
return answer;
}
첨에 repeat 함수가 생각났지만, 수박에서 "수"와 "박"을 반으로 어떻게 하지?? 라는 고민을 접고 그냥 바로 후딱 풀었다. 다른 사람의 풀이를 보면 내가 생각하는 방법으로 누가 풀었을 거라 믿는다.
const solution = (n) => '수박'.repeat(n/2) + (n%2 === 1 ? '수' : '');
역시나.. repeat을 이렇게 반으로 나눠서 하는 방법이 있었다! 이해를 위해 테스트해봤다.
"수박".repeat(5/2)
-> "수박수박" -> 여기에 + (5%2 === 1 ? '수' : '');
-> "수박수박수"
repeat()에는 정수만큼 반복한다는 것을 알 수 있었다. 5/2는 3.5지만 정수형 형 변환하면 내림으로 3이 되어버린다. 이 풀이 방법이 내가 푼 방법 보다 더 속도가 빠르다.
참고 자료 및 사이트 (감사합니다)