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에 맞춰 할당한다.
둘다 해당 문의 답변은 되겠지만, 재사용성이나 좀더 합리적인 로직은 첫번째 로직인것 같다.