알고리즘 문제 풀이/프로그래머스
[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
}
}
반응형