🌠 문제

점 λ„€ κ°œμ˜ μ’Œν‘œλ₯Ό λ‹΄μ€ μ΄μ°¨μ› λ°°μ—΄  dotsκ°€ λ‹€μŒκ³Ό κ°™μ΄ λ§€κ°œλ³€μˆ˜λ‘œ μ£Όμ–΄μ§‘λ‹ˆλ‹€.

[[x1, y1], [x2, y2], [x3, y3], [x4, y4]]
μ£Όμ–΄μ§„ λ„€ κ°œμ˜ μ μ„ λ‘ κ°œμ”© μ΄μ—ˆμ„ λ•Œ, λ‘ μ§μ„ μ΄ ν‰ν–‰μ΄ λ˜λŠ” κ²½μš°κ°€ μžˆμœΌλ©΄ 1을 μ—†μœΌλ©΄ 0을 return ν•˜λ„둝 solution ν•¨μˆ˜λ₯Ό μ™„μ„±ν•΄λ³΄μ„Έμš”.

🌠 μ œν•œμ‚¬ν•­

  • dots의 길이 = 4
  • dots의 μ›μ†ŒλŠ” [x, y] ν˜•νƒœμ΄λ©° x, yλŠ” μ •μˆ˜μž…λ‹ˆλ‹€.
  • 0 ≤ x, y ≤ 100
  • μ„œλ‘œ λ‹€λ₯Έ λ‘κ°œ μ΄μƒμ˜ 점이 κ²ΉμΉ˜λŠ” κ²½μš°λŠ” μ—†μŠ΅λ‹ˆλ‹€.
  • 두 직선이 κ²ΉμΉ˜λŠ” 경우(μΌμΉ˜ν•˜λŠ” 경우)에도 1을 return ν•΄μ£Όμ„Έμš”.
  • μž„μ˜μ˜ λ‘ μ μ„ μ΄μ€ μ§μ„ μ΄ xμΆ• λ˜λŠ” yμΆ•κ³Ό ν‰ν–‰ν•œ κ²½μš°λŠ” μ£Όμ–΄μ§€μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

🌠 μž…μΆœλ ₯ 예

dots result
[[1, 4], [9, 2], [3, 8], [11, 6]] 1
[[3, 5], [4, 1], [2, 4], [5, 10]] 0

🌠 μž…μΆœλ ₯ 예 μ„€λͺ…

μž…μΆœλ ₯ 예 #1

  • 점 [1, 4], [3, 8]을 μž‡κ³  [9, 2], [11, 6]λ₯Ό 이으면 두 선뢄은 ν‰ν–‰ν•©λ‹ˆλ‹€.

μž…μΆœλ ₯ 예 #2

  • 점을 μ–΄λ–»κ²Œ 연결해도 ν‰ν–‰ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

🧞 풀이

function solution(dots) {
    // μ§μ„ μ˜ 기울기 (y1 - y2) / (x1 - x2)
    // 점을 μž‡λŠ” 경우의 μˆ˜λŠ” 3개
    // μ„Έ 개면 λ‹€ ν•˜λŠ”κ²Œ λΉ λ₯Ό 것 κ°™μŒ
    let answer = 0;
    
    let a = Math.abs(dots[0][1] - dots[1][1]) / Math.abs(dots[0][0] - dots[1][0]);
    let b = Math.abs(dots[2][1] - dots[3][1]) / Math.abs(dots[2][0] - dots[3][0]);
    
    if (a - b === 0) {
        answer = 1;
    }
    
    let c = Math.abs(dots[0][1] - dots[2][1]) / Math.abs(dots[0][0] - dots[2][0]);
    let d = Math.abs(dots[1][1] - dots[3][1]) / Math.abs(dots[1][0] - dots[3][0]);
    
    if (c - d === 0) {
        answer = 1;
    }
    
    let e = Math.abs(dots[0][1] - dots[3][1]) / Math.abs(dots[0][0] - dots[3][0]);
    let f = Math.abs(dots[1][1] - dots[2][1]) / Math.abs(dots[1][0] - dots[2][0]);
    
    if (e - f === 0) {
        answer = 1;
    }
    
    return answer;
}

+ Recent posts