문제 설명
길이가 n이고, "수박수박수박수...."와 같은 패턴을 유지하는 문자열을 리턴하는 함수, solution을 완성하세요. 예를 들어 n이 4이면 "수박수박"을 리턴하고 3이라면 "수박수"를 리턴하면 됩니다.
제한 조건
n은 길이 10,000이하인 자연수입니다.
입출력 예
n return
3 "수박수"
4 "수박수박"
function solution(n) {
let arr = ['수', '박'];
arr = arr.reduce((prev, curr) => (arr[0]+arr[1]).repeat(n/2));
return n%2?arr+arr[0]:arr;
}
기입 후 제출하는데 채점 시 통과가 안 되서 의외였다.
설마 해서 확인했더니 n===1인 경우 였다. 그래서 n/2와 n%2에 각각 소숫점 내림 함수를 붙였다. 그런데도 아래와 같이 solution(1)의 값이 undefined가 나와 재확인했다.
이는 기존의 배열 타입 변수 arr를 새 값으로 덮어씌우느라 배열 내용이 오류가 난 듯 했다.
function solution(n) {
let arr = ['수', '박'];
let str = arr.reduce( (prev, curr) => (arr[0]+arr[1]).repeat(Math.floor(n/2)) );
return Math.floor(n%2)?str+arr[0]:str;
}
통과하였다.
다른 분들의 답안 맨 위에 핫한 답안 하나가 있었다.
댓글이 엄청 많았다...
문제 개편 이전인 듯 했다.
다른 답안들을 쭉 보니 다들 substring(0,n)을 많이 썼다.