관리 메뉴

나만을 위한 블로그

[Algorithm] 프로그래머스 - 평행 (Kotlin) 본문

알고리즘 문제 풀이/프로그래머스

[Algorithm] 프로그래머스 - 평행 (Kotlin)

참깨빵위에참깨빵_ 2023. 1. 27. 23:50
728x90
반응형
점 4개의 좌표를 담은 2차원 배열 dots가 매개변수로 주어진다. 주어진 4개의 점을 2개씩 이었을 때, 두 직선이 평행이 되는 경우가 있으면 1, 없으면 0을 리턴하는 solution()을 완성하라

 

 

직선이 x축, y축과 평행한 경우는 없다는 조건을 보고 매개변수로 받은 숫자들을 하나씩 변수에 넣고 직선이 되는 값들끼리 뺀 값을 절대값으로 환산했을 때, 두 숫자가 같으면 1을 리턴하고 없으면 0을 리턴하는 식으로 풀면 되겠다 싶었다.

 

import kotlin.math.abs

class Solution {
    fun solution(dots: Array<IntArray>): Int {
        var answer = 0

        val x1 = dots[0][0]
        val y1 = dots[0][1]
        val x2 = dots[1][0]
        val y2 = dots[1][1]
        val x3 = dots[2][0]
        val y3 = dots[2][1]
        val x4 = dots[3][0]
        val y4 = dots[3][1]

        if (abs((x1 - x2) * (y3 - y4)) == abs((y1 - y2) * (x3 - x4))) {
            return 1
        }
        if (abs((x1 - x3) * (y2 - y4)) == abs((y1 - y3) * (x2 - x4))) {
            return 1
        }
        if (abs((x1 - x4) * (y2 - y3)) == abs((y1 - y4) * (x2 - x3))) {
            return 1
        }
        return 0
    }
}

 

공책에 몇 번 그려가면서 삽질했는데 어떻게 풀리긴 풀렸다. 다른 사람은 아래처럼 풀었다.

 

https://velog.io/@jsj3282/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-%ED%8F%89%ED%96%89

 

프로그래머스 평행

점 네 개의 좌표를 담은 이차원 배열 dots가 다음과 같이 매개변수로 주어집니다.\[x1, y1, x2, y2, x3, y3, x4, y4]주어진 네 개의 점을 두 개씩 이었을 때, 두 직선이 평행이 되는 경우가 있으면 1을 없으

velog.io

class Solution {
    fun solution(dots: Array<IntArray>): Int {
        var answer = 0
        val arr = ArrayList<Double>()
        for (i in 0 until dots.size - 1) {
            if (answer == 1) {
                break
            } else {
                for (j in i + 1 until dots.size) {
                    val tmp = (dots[i][1] - dots[j][1]).toDouble() / (dots[i][0] - dots[j][0])
                    if (arr.contains(tmp)) {
                        answer = 1
                        break
                    } else {
                        arr.add(tmp)
                    }
                }
            }
        }
        return answer
    }
}
반응형
Comments