eatthefrog

코딩테스트자바스크립트 코딩 테스트: 배열 기초 문제(1) 본문

코딩테스트

코딩테스트자바스크립트 코딩 테스트: 배열 기초 문제(1)

eater_forg 2025. 4. 30. 15:18

 

배열의 원소만큼 추가하기

[ 문제 정의 ]

입력: 빈 배열: X, numnber type array: arr,
출력: number type array: answer
f(x): arr의 앞에서부터 차례대로 원소를 보면서 원소가 a라면 x의 맨뒤 a를 a번추가하는 일을 반복한뒤의 배열 x를 return

 

의사코드

1. for문 순회 : arr의 앞ㅇ서부터 차례대로 원소를 보면서

2. 중첩 반복문,push(): 원소가 a라면 x의 맨뒤 a를 a번추가하는 일 반복 

function solution(arr) {
    let answer = [];
    let number = 0;
    for (const item of arr){
        for (let i=0; i<item; i++){
            answer.push(arr[number])
        }
        number++;
    }

    return answer;
}


[ 개선 포인트 => number 변수가 불필요하다.]

  • for...of 문으로 item 자체를 꺼내 쓰고 있기 때문에, 굳이 인덱스를 따로 세서 arr[number]를 사용할 필요가 없다.
  • 이미 item이 원하는 값이야! 이걸 바로 push() 하면 됀다.

[ 습득한 지식 ]

반복문 형태 item이 의미하는 것

for (const item of arr) item은 배열의
for (let i = 0; i < arr.length; i++) i는 인덱스, arr[i]가

 

표현 의미 예시 (arr = [3, 1, 2])

item 배열에서 꺼낸 3, 1, 2
arr[item] 배열의 인덱스가 item인 값 arr[3] → undefined (없는 인덱스!)

 

배열에서 문자열 대소문자 변환하기

[ 문제정의 ]

입력:string type array: strArr
출력:string type array: answer
f(x): 배열에서 홀수번째 인덱스의 문자열은 모든 문자를 대문자로, 짝수번째 인덱스의 문자열은 모든 문자를 소문자로 바꿔서 반환

[ 문법 ]
배열 인덱스 홀수 짝수 구분 -> for문에서 i를 인덱스로보고 홀,짝구분 가능할듯 i%2==1
대소문자 변홤 메서드 -> toLowerCase()와 toUpperCase() 

[ 의사코드 ]
1. for문 반복: 배열의 처음부터끝까지 순회하면서
2. 조건문: 짝수 인덱스는 소문자toLowerCase(), 홀수 인덱스는 대문자toUpperCase()

function solution(strArr) {
    var answer = [];
    
    for (let i=0; i<strArr.length; i++){
        
        if(i % 2 == 1){
            answer.push(strArr[i].toUpperCase());
        }
        else {
            answer.push(strArr[i].toLowerCase());
        }
    }
    return answer;
}

 

[ 개선 포인트 ]

 

1. == 대신 ===을 써보자!

  • JavaScript에서는 ==는 타입을 느슨하게 비교하고, ===는 타입까지 엄격하게 비교한다.
  • 코딩 테스트에서는 보통 문제없이 작동하지만, 실무나 리팩토링 관점에서는 ===이 더 안전하다.

2. map()을 활용한 방법도 생각해보자!

  • 지금은 for문이 명확하지만, map()도 연습해두면 좋을 도구다.
  • return strArr.map((str, i) => i % 2 === 1 ? str.toUpperCase() : str.toLowerCase() ); 내가 지금 짠 것과 동일한 기능을 하지만 한 줄로 깔끔하게 표현할 수 있다.

 

 

 

 

 

 

👍오늘 잘한점

1. 문제 이해도, 구현 정확도, 문법 사용 

2. 내가 아는 지식들을 잘 짬뽕 시켜서 풀이 구현 

 

🍀발전 포인트

1. for문대신 map을 활용하여, 더  간결한 표현 가능 => 유데미 map복습!!