728x90
# 문제
정수 n이 매개변수로 주어질 때, n 이하의 홀수가 오름차순으로 담긴 배열을 return하도록 solution 함수를 완성해주세요.
# 답안
// 1. 입력: n -> 정수 5 같은거
// 2. 출력: n 이하의 홀수가 오름차순으로 담긴 배열 -> [1,3,5] 같은거
// 방법1) for 반복문 사용
function solution(n) {
const arr = []
for(let i = 1; i <= n; i++){
if(i % 2 !== 0){
answer.push(i)
}
}
return arr;
}
}
// 방법2) 위의 코드 줄이기
function solution(n) {
const answer = [];
for (let i = 1; i <= n; i+=2) answer.push(i)
return answer;
}
# 인사이트
// 1. 반복문의 본문이 하나의 문(statement)일 때는 중괄호({})로 감싸지 않아도 된다
// 즉, 단일 문(statement)으로 이루어진 경우에는 중괄호를 생략할 수 있다.
// 이렇게 하나의 문으로 이루어진 경우에는 중괄호를 생략하는 것이 일반적으로 더 간결하고 코드를 읽기 쉽게 만들 수 있다.
// 2. 홀수를 나타낼 때는, i % 2 === 1 보다는 i % 2 !== 0 이 더 일반화된 표현이다.
// i를 2로 나눈 나머지가 0이 아닌 경우를 찾는 것이므로 홀수를 찾는 것이라고 명확하게 이해가 가능하다.
// i % 2 === 0이면 i는 짝수이고,
// i % 2 !== 0이면 i는 홀수이다.
< 2번째 방법이 더 나은 이유 >
두 함수는 모두 주어진 수 n까지의 홀수를 배열에 담아 반환하는 함수이다.
두 코드 모두 올바르게 작성되어 있지만, 두 번째 함수가 더 간결하고 직관적이다.
여기서 두 번째 함수의 장점은 다음과 같다.
1. 간결성
두 번째 함수는 for 반복문의 조건을 i += 2로 설정하여 짝수를 건너뛰며 홀수만 추가하고 있다.
이는 더 간결한 코드로 홀수를 처리하는 방법이다.
2. 직관성
두 번째 함수에서는 for 반복문의 조건만 보아도 홀수를 추가하는 것임을 쉽게 이해할 수 있다.
i += 2로 인해 짝수를 건너뛰고 홀수만 추가하는 코드로 명확하다.
3. 성능
두 번째 함수에서는 for 반복문이 한 번의 반복으로 홀수를 추가하고 있다.
반면 첫 번째 함수에서는 for 반복문이 모든 홀수와 짝수를 반복하며, 조건문을 사용하여 홀수만 추가하고 있다.
따라서 두 번째 함수가 더 효율적인 성능을 가질 수 있다.
728x90
'Coding Test > Programmers' 카테고리의 다른 글
[프로그래머스/JavaScript] 코딩 테스트 풀이 (문제 33 - 배열의 유사도) (0) | 2024.02.04 |
---|---|
[프로그래머스/JavaScript] 코딩 테스트 풀이 (문제 32 - 옷가게 할인 받기) (0) | 2024.02.03 |
[프로그래머스/JavaScript] 코딩 테스트 풀이 (문제 30 - 아이스 아메리카노) (0) | 2024.02.02 |
[프로그래머스/JavaScript] 코딩 테스트 풀이 (문제 29 - 중앙값 구하기 ) (0) | 2024.02.02 |
[프로그래머스/JavaScript] 코딩 테스트 풀이 (문제 28 - 배열 두 배 만들기) → map, reduce, for, forEach, for...of 다 사용해보기 (0) | 2024.02.01 |