Javascript/문제 풀이

프로그래머스 13일차

아라라_ 2023. 5. 28. 23:27

“ 지연되는 프로젝트에 인력을 더 투입하면 오히려 더 늦어진다. ”

Frederick Philips Brooks
Mythical Man-Month 저자
728x90

점의 위치 구하기

사분면은 한 평면을 x축과 y축을 기준으로 나눈 네 부분입니다. 사분면은 아래와 같이 1부터 4까지 번호를매깁니다. 스크린샷 2022-07-07 오후 3.27.04 복사본.png x 좌표와 y 좌표가 모두 양수이면 제1사분면에 속합니다. x 좌표가 음수, y 좌표가 양수이면 제2사분면에 속합니다. x 좌표와 y 좌표가 모두 음수이면 제3사분면에 속합니다. x 좌표가 양수, y 좌표가 음수이면 제4사분면에 속합니다. x 좌표 (x, y)를 차례대로 담은 정수 배열 dot이 매개변수로 주어집니다. 좌표 dot이 사분면 중 어디에 속하는지 1, 2, 3, 4 중 하나를 return 하도록 solution 함수를 완성해주세요.

function solution(dot) {
    if(dot[0] > 0 && dot[1] > 0){
        return 1;
    }
    
    if(dot[0] < 0 && dot[1] > 0){
        return 2;
    }
    
    if(dot[0] < 0 && dot[1] < 0){
        return 3;
    }
    
    if(dot[0] > 0 && dot[1] < 0){
        return 4;
    }

}

주어진 좌표 dot의 첫 번째 요소가 양수이고 두 번째 요소도 양수일 경우, 이 좌표는 제1사분면에 속하므로 1을 반환합니다. 그 다음으로, 첫 번째 요소가 음수이고 두 번째 요소는 양수일 경우, 이 좌표는 제2사분면에 속하므로 2를 반환합니다. 세 번째로, 첫 번째 요소와 두 번째 요소가 모두 음수일 경우, 이 좌표는 제3사분면에 속하므로 3을 반환합니다. 마지막으로, 첫 번째 요소가 양수이고 두 번째 요소는 음수일 경우, 이 좌표는 제4사분면에 속하므로 4를 반환합니다. 위의 조건문들은 좌표의 x, y 값의 부호에 따라 해당하는 사분면 번호를 반환하는 역할을 합니다. 이렇게 각 조건을 확인하고 해당하는 사분면 번호를 반환하는 방식으로 동작합니다.


 

2 차원으로 만들기

정수 배열 num_list와 정수 n이 매개변수로 주어집니다. num_list를 다음 설명과 같이 2차원 배열로 바꿔 return하도록 solution 함수를 완성해주세요. num_list가 [1, 2, 3, 4, 5, 6, 7, 8] 로 길이가 8이고 n이 2이므로 num_list를 2 * 4 배열로 다음과 같이 변경합니다. 2차원으로 바꿀 때에는 num_list의 원소들을 앞에서부터 n개씩 나눠 2차원 배열로 변경합니다.

function solution(num_list, n) {
    // 정답배열 생성
    const result = []
    // 전 범위 순환
    for(let i = 0 ; i < num_list.length; ) {
        const sliceN = []
        // n만큼 배열 생성
        for(let j = 0 ; j < n ; j++) {
            sliceN.push(num_list[i])
            i++
        }
        result.push(sliceN)
    }
    return result
}

빈 배열 result를 생성합니다. 이 배열은 최종적으로 반환될 2차원 배열입니다.

그 다음, 외부의 for 루프를 사용하여 num_list의 범위를 순환합니다. 이 때, 반복 변수 i는 num_list의 인덱스를 나타냅니다.

내부의 for 루프에서는 sliceN이라는 빈 배열을 생성합니다. 이 배열은 n개의 요소를 가지게 될 것입니다.

sliceN 배열에는 num_list의 요소를 앞에서부터 n개씩 넣어줍니다. 이를 위해 내부의 for 루프에서 반복 변수 j를 사용합니다. j는 n까지 반복하면서 sliceN 배열에 num_list[i]를 추가하고, i를 1씩 증가시킵니다. 이렇게 함으로써 num_list의 요소를 n개씩 sliceN 배열에 추가하게 됩니다.

sliceN 배열이 완성되면, result 배열에 해당 배열을 추가합니다. 이렇게 함으로써 2차원 배열의 한 행이 형성됩니다.

외부의 for 루프가 모든 요소를 순환하면, 최종적으로 result 배열이 완성되고 이를 반환합니다.

예를 들어, 주어진 num_list가 [1, 2, 3, 4, 5, 6, 7, 8]이고 n이 2일 경우, num_list를 2개씩 묶어 2차원 배열로 변환합니다. 따라서 반환되는 결과는 [[1, 2], [3, 4], [5, 6], [7, 8]]입니다.