길이가 n이고, "수박수박수박수...."와 같은 패턴을 유지하는 문자열을 리턴하는 함수, solution을 완성하세요. 예를들어 n이 4이면 "수박수박"을 리턴하고 3이라면 "수박수"를 리턴하면 됩니다.
n | return |
---|---|
3 | "수박수" |
4 | "수박수박" |
const solution = (n) => {
const a = Array(n).fill("수")
for(let i = 1; i < n; i += 2){
a[i] = "박"
}
return a.join("");
}
/*
내가 처음 작성한 코드이다.
1. Array(n) 생성자 함수를 사용하여 n개를 가지고 있는 배열을 만든 후
fill('수') 메서드로 모든 요소에 '수'로 채워준다.
2. for 루프는 a의 홀수 인덱스에 접근하도록 i를 1부터 시작하여 n까지 2씩 증가 시킨다.
3. for 루프안에서 a[i]='박'을 해주어 홀수 인덱스에 '박'으로 다 변경해 주었다.
4. a는 배열이기 때문에 join("")으로 string으로 변환 후 return해주었다.
*/
const solution = (n) =>'수박'.repeat(n / 2) + (n % 2 === 1 ? '수' : '');
/*
더 간단하게 작성할수 있는 방법을 생각하다가 작성해보았다.
1. '수박'을 repeat(n/2)를 사용하여 반복해준다.
2. 마지막 글자는 n%2 === 1 ? '수' : '' 삼항 연산자를 사용하여 나머지가 1일때(n이 홀수)
'수'를 추가해주어 return 한다.
*/
const solution = (n) => "수박".repeat(n / 2 + 1).slice(0, n);
/*
조금 더 간단하게 작성해보았다.
1. '수박'을 repeat를 사용하여 n/2+1(+1을 해주어 나머지가 있는 경우도 계산)개 만큼 복사해준다.
2. slice(0,n)을 사용하여 0번째 인덱스부터 n개 만큼 복사하여 return 해준다.
*/
const solution = (n) => {
var result = ""
for(var i = 0; i < n; i += 1){
result += (i % 2 === 0) ? "수" : "박"
}
return result;
}
/*
SOLUTON1과 SOLUTON2가 더 간단하게 작성할 수 있지만 명령형 코드로 SOLTION1보다 간단한 코드로
작성해보려고 한다.
1. result에 빈 string을 넣어준다.
2. for 루프를 통해서 result에 i % 2 === 0 일 경우(짝수) "수"를 result에 추가해주고
i % 2 !== 0 경우 (홀수) "박"을 result에 추가하여 준다.
3. for 루프가 종료 된 후 result를 return 해준다.
*/
출처 : 프로그래머스 스쿨 | 코딩테스트 연습
https://school.programmers.co.kr/learn/courses/30/lessons/12922