문제
정수 배열 arr가 주어집니다. arr의 각 원소에 대해 값이 50보다 크거나 같은 짝수라면 2로 나누고, 50보다 작은 홀수라면 2를 곱합니다. 그 결과인 정수 배열을 return 하는 solution 함수를 완성해 주세요.
제한사항
- 1 ≤ arr의 길이 ≤ 1,000,000
- 1 ≤ arr의 원소의 값 ≤ 100
고민한 점 & 해결 과정
조건이 50보다 크고 작은지, 그리고 짝수인지 홀수인지 두 가지로 한번에 판단하기 위해 and연산자(&&)를 사용하며 각각의 조건에 따라 결과를 return하는 방법으로 접근했습니다.
function solution(arr) {
let result = [];
for (const i of arr) {
if (i >= 50 && i%2 === 0) {
result.push(i/2)
} else if
(i < 50 && i%2 !== 0) {
result.push(i*2)
} else {
result.push(i)
}
}
return result;
}
해당 코드로도 문제는 해결할 수 있었지만 조건들을 적느라 if문, else if문, else문이 있어서 코드가 지저분해 보였습니다. 다른 사람들의 코드를 참고하며 어떻게 가독성 좋게 바꿔볼 수 있을 지 고민했습니다.
<프로그래머스 다른 사람의 코드>
function solution(arr) {
return arr.map(num => {
if(num >= 50 && !(num % 2)) return num / 2;
if(num < 50 && num % 2) return num * 2;
return num;
})
}
해당 코드를 살펴보니, 굳이 빈 배열을 생성하지 않아 매번 push해 줄 필요가 없었고 map()메서드를 통해 arr를 효율적으로 돌며 블록 하나안의 if문 두 줄 만으로 해결할 수 있다는 걸 깨달았습니다.
최종 결과 및 느낀 점
문제를 해결하는 것도 좋지만, 효율적이고 가독성 좋은 코드를 위해 다른 코드를 참고해보는 것도 중요하다는 것을 깨달았습니다.
'코딩 테스트 공부' 카테고리의 다른 글
| 프로그래머스 자바스크립 코딩 기초 트레이닝 - 특정 문자열로 끝나는 가장 긴 부분 문자열 찾기 (lastIndexOf()메서드, substring()메서드) (0) | 2026.01.08 |
|---|---|
| 프로그래머스 자바스크립 코딩 기초 트레이닝 - A 강조하기 (대소문자 변환 메서드, replace(), replaceAll() 메서드, 정규 표현식) (0) | 2026.01.07 |
| 프로그래머스 자바스크립 코딩 기초 트레이닝 - 수열과 구간 쿼리1 (이중 for 문) (0) | 2026.01.02 |
| 프로그래머스 자바스크립 코딩 기초 트레이닝 - 가까운 1 찾기 & 첫 번째로 나오는 음수 (0) | 2025.12.26 |
| 프로그래머스 자바스크립 코딩 기초 트레이닝 - 접미사 배열 (0) | 2025.12.17 |