Algorithm Problem/Python

[python] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค - ๊ต์ ์— ๋ณ„ ๋งŒ๋“ค๊ธฐ(์œ„ํด๋ฆฌ ์ฑŒ๋ฆฐ์ง€)

deo2kim 2022. 2. 8. 22:46
๋ฐ˜์‘ํ˜•

๐Ÿค”๋ฌธ์ œ ํ•ด๊ฒฐ

๐Ÿ’จ ๊ต์  ๊ตฌํ•˜๊ธฐ -> ๋ฌธ์ œ์—์„œ ์ฃผ์–ด์ง„ ๊ณต์‹์œผ๋กœ ๋ชจ๋“  ๊ต์ ์„ ๊ตฌํ•œ๋‹ค.

๐Ÿ’จ ๋ฐฐ์—ด ํฌ๊ธฐ ์ •ํ•˜๊ธฐ -> x, y ์˜ ์ตœ๋Œ€ ์ตœ์†Œ๊ฐ’์œผ๋กœ

๐Ÿ’จ ๋ฐฐ์—ด ๋งŒ๋“ค๊ธฐ -> ๋ฐฐ์—ด์„ ๋งŒ๋“ ๋‹ค.

๐Ÿ’จ ๋ณ„ ์ฐ๊ธฐ -> ์™œ ์ขŒํ‘œ๊ฐ€ (y_max - y, x - x_min) ์ธ์ง€ ํ—ท๊ฐˆ๋ฆด ์ˆ˜ ์žˆ๋‹ค. ์ˆ˜ํ•™ ์ขŒํ‘œ๋ž‘ ๋ฐฐ์—ด๋กœ ๋‚˜ํƒ€๋‚ด๋Š” ์ขŒํ‘œ์˜ 0์ ์ด ๋‹ค๋ฅด๊ธฐ ๋•Œ๋ฌธ์— ์ ์ ˆํ•˜๊ฒŒ ๋ฐ”๊ฟ”์ค˜์•ผํ•œ๋‹ค.

 

๐Ÿ’ป์†Œ์Šค ์ฝ”๋“œ

def solution(line):
    dot_list = []
    for i in range(len(line)):
        A, B, E = line[i]
        for j in range(i + 1, len(line)):
            C, D, F = line[j]
            bunja = A * D - B * C
            if int(bunja) == 0:
                continue

            x = (B * F - E * D) / bunja
            y = (E * C - A * F) / bunja
            # ์ •์ˆ˜์ธ์ง€ ์†Œ์ˆ˜์ธ์ง€
            if x - int(x) == 0 and y - int(y) == 0:
                x, y = int(x), int(y)
                dot_list.append([x, y])

    # ๋ฐฐ์—ด ํฌ๊ธฐ ์ •ํ•˜๊ธฐ
    x_dot_list = [dot[0] for dot in dot_list]
    y_dot_list = [dot[1] for dot in dot_list]
    x_min, x_max = min(x_dot_list), max(x_dot_list)
    y_min, y_max = min(y_dot_list), max(y_dot_list)
    # ๋ฐฐ์—ด ๋งŒ๋“ค๊ธฐ
    arr = [['.' for _ in range(x_max - x_min + 1)] for _ in range(y_max - y_min + 1)]

    # ๋ณ„ ์ฐ๊ธฐ
    for dot in dot_list:
        x, y = dot
        arr[y_max - y][x - x_min] = '*'

    return [''.join(a) for a in arr]

 

๐Ÿ“•๋ฌธ์ œ ํ™•์ธ

์ถœ์ฒ˜: ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

๋งํฌ: ๊ต์ ์— ๋ณ„ ๋งŒ๋“ค๊ธฐ

๋ฐ˜์‘ํ˜•