Web/프로그래머스

[Programmers / JavaSciprt ] Lev.1 수박수박수박수박수?

리슨업 2024. 2. 15. 17:21

 

 

 

 

 

[TEST]

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

 

 

[입출력 예]

입력 값 출력 값
3 "수박수"
4 "수박수박"

 

 

단순하게 입력값에 길이에 맞게 "수","박" 의 글씨를 맞춰서 출력하면 되는 예제였다.

for문을 쓸까 하다가 고차함수로 조금 간략하게 해보고 싶어서 고민해봤다..

 

개발자라면 코드의 "가독성"이 하나의 생명아닌가

 

 

 

#Solution 1

const solution2 = (n) => {
    const waterMelon = "수박";
    return (waterMelon.repeat(Math.ceil(n/waterMelon.length))).slice(0,n);
}

 

수박 글자 갯수에 맞춰서 반복되야 해야 함으로 waterMelon 문자열의 길이를 n과 나누어 문자열을 반복 시켰다. 

"수박"의 길에 맞춰 입력받은 N의 길이대로 수박을 출력하고 불필요한 문자열을 만들지 않는다. 

나름 좀 더 재사용성을 고려해보고 짠 코드..

 

 

 

#Solution 2

const solution = (n) => {
	return [...Array(n)].map((_,idx)=> idx % 2 ? "박": "수");
}

 

뭔가 더 줄여보고 싶어서 줄인 솔루션

n의 수를 배열의 길이로 설정 한 이후 할당된 배열의 공간에 index의 값대로 짝수면 "박"을 홀수면 "수"를 각 Index에 맞춰 할당한다. 

 

 

 

둘다 해당 문의 답변은 되겠지만, 재사용성이나 좀더 합리적인 로직은 첫번째 로직인것 같다.