구조분해 할당 응용

HS K·2023년 2월 22일
1

개요

며칠전에 프로그래머스에서 풀었던 문제중에 이해가 잘 가지 않았던 문제가 있었다.
코드는 다음과 같다.


const solution = ([[x1, y1], [x2, y2], [x3, y3], [x4, y4]]) => {
    if((y1 - y2) / (x1 - x2) === (y3 - y4) / (x3 - x4)) return 1;
    if((y1 - y3) / (x1 - x3) === (y2 - y4) / (x2 - x4)) return 1;
    if((y1 - y4) / (x1 - x4) === (y2 - y3) / (x2 - x3)) return 1;
    return 0;
}

매개변수에 2차원 배열이 들어가는데, 어떻게 조건식에는 배열이 바로 풀려있는지 이해가 가질않아 다른 사람들의 풀이를 보면서 깨달았다.


function solution(dots) {
    if((dots[0][1] - dots[1][1]) / (dots[0][0] - dots[1][0]) === (dots[2][1] - dots[3][1]) / (dots[2][0] - dots[3][0])) return 1
    if((dots[0][1] - dots[2][1]) / (dots[0][0] - dots[2][0]) === (dots[1][1] - dots[3][1]) / (dots[1][0] - dots[3][0])) return 1
    if((dots[0][1] - dots[3][1]) / (dots[0][0] - dots[3][0]) === (dots[2][1] - dots[1][1]) / (dots[2][0] - dots[1][0])) return 1
    return 0
}

문제의 조건처럼 배열 dots=[[x1, y1], [x2, y2], [x3, y3], [x4, y4]] 이므로, 함수의 매개변수 자리에 배열 dots가 들어갈때 요소에 접근하는 식을 쓴다면
그와 반대로 매개변수 자리에 배열이 그대로 들어갈때 배열의 접근과 변수는 서로 같다.

정리하면 다음과 같다.

dots=[[x1, y1], [x2, y2], [x3, y3], [x4, y4]]
x1= dots[0][0]

사고의 전환을 하면 풀리는 간단한 문제였다.

후기

역시 이해가 잘 안가거나 무언가 잘 안보인다면, 문제와 개념, 풀이를 유형화 시켜서 외우는게 아니라 기본 개념에 충실하게 개념의 정의대로 따라가 직접 써보고 볼 줄 아는 눈을 길러야한다.

profile
주의사항 : 최대한 정확하게 작성하려고 하지만, 틀릴내용이 있을 수도 있으니 유의!

0개의 댓글