dev/algorithm

BOJ / 20206번 / 푸앙이가 길을 건너간 이유 [Go]

crscnt 2020. 11. 23. 21:00

👩🏻‍💻 ëŹ¸ě œ

 

20206번: 푸앙이가 길을 건너간 이유

첍째 줄에는 정수 A, B, C (-10,000 ≤ A, B ≤ 10,000, -100,000 ≤ C ≤ 100,000)가 주어진다. 해당 숫자들은 좌표 평면 상에서 Ax+By+C=0 형태로 표현되는 푸앙이가 지나가는 ě§ě„  상의 경로을 나타낸다. (단

www.acmicpc.net


✍🏻 í’€ě´

🎨 Go

// https://www.acmicpc.net/problem/20206
package main

import (
	"bufio"
	"fmt"
	"os"
)

func main() {
	reader := bufio.NewReader(os.Stdin)
	writer := bufio.NewWriter(os.Stdout)
	defer writer.Flush()

	var a, b, c float64
	fmt.Fscanln(reader, &a, &b, &c)

	var x1, x2, y1, y2 float64
	fmt.Fscanln(reader, &x1, &x2, &y1, &y2)

	fmt.Fprintln(writer, checkSecurity(a, b, c, x1, x2, y1, y2))
}

func checkSecurity(a, b, c, x1, x2, y1, y2 float64) string {
	if x1 > x2 {
		x1, x2 = x2, x1
	}
	if y1 > y2 {
		y1, y2 = y2, y1
	}
	y := (a*x1 + c) / (-b)
	if y < y2 && y1 < y {
		return "Poor"
	}

	y = (a*x2 + c) / (-b)
	if y < y2 && y1 < y {
		return "Poor"
	}

	x := (b*y1 + c) / (-a)
	if x < x2 && x1 < x {
		return "Poor"
	}

	x = (b*y2 + c) / (-a)
	if x < x2 && x1 < x {
		return "Poor"
	}
	return "Lucky"
}
728x90