์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- ๊น์ด์ฐ์ ํ์
- ๊ทธ๋ฆฌ๋
- skala
- ์ํ
- DFS
- ์ ๋ ฌ
- ์ฐ์ ์์ํ
- ๋๋น์ฐ์ ํ์
- ๋ฐฑ์ค
- ์๊ณ ๋ฆฌ์ฆ
- ๋จธ์ง์ํธ
- ๋ค์ด๋๋ฏนํ๋ก๊ทธ๋๋ฐ
- ์์ํ์
- ๊ตฌํ
- ๋์ ํฉ
- DP
- SQL
- skala1๊ธฐ
- ๋ณํฉ์ ๋ ฌ
- ๋์ ๊ณํ๋ฒ
- ํฐ์คํ ๋ฆฌ์ฑ๋ฆฐ์ง
- BFS
- ๊ทธ๋ํํ์
- ๊ทธ๋ํ
- LIS
- ์ค๋ธ์
- db
- ๋ฐ์ดํฐ๋ฒ ์ด์ค
- ํ์ด์ฌ
- ํ๋ก๊ทธ๋๋จธ์ค
- Today
- Total
๐๐ญ๐ฐ๐ธ ๐ฃ๐ถ๐ต ๐ด๐ต๐ฆ๐ข๐ฅ๐บ
[ํ๋ก๊ทธ๋๋จธ์ค] ๊ต์ ์ ๋ณ ๋ง๋ค๊ธฐ - ํ์ด์ฌ ๋ณธ๋ฌธ
[ํ๋ก๊ทธ๋๋จธ์ค] ๊ต์ ์ ๋ณ ๋ง๋ค๊ธฐ - ํ์ด์ฌ
.23 2024. 11. 17. 20:07๋ฌธ์
๐ ํ๋ก๊ทธ๋๋จธ์ค - ๊ต์ ์ ๋ณ ๋ง๋ค๊ธฐ
Ax + By + C = 0์ผ๋ก ํํํ ์ ์๋ n๊ฐ์ ์ง์ ์ด ์ฃผ์ด์ง ๋, ์ด ์ง์ ์ ๊ต์ ์ค ์ ์ ์ขํ์ ๋ณ์ ๊ทธ๋ฆฌ๋ ค ํฉ๋๋ค.
์๋ฅผ ๋ค์ด, ๋ค์๊ณผ ๊ฐ์ ์ง์ 5๊ฐ๋ฅผ
- 2x - y + 4 = 0
- -2x - y + 4 = 0
- -y + 1 = 0
- 5x - 8y - 12 = 0
- 5x + 8y + 12 = 0
์ขํ ํ๋ฉด ์์ ๊ทธ๋ฆฌ๋ฉด ์๋ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ต๋๋ค.

์ด๋, ๋ชจ๋ ๊ต์ ์ ์ขํ๋ (4, 1), (4, -4), (-4, -4), (-4, 1), (0, 4), (1.5, 1.0), (2.1, -0.19), (0, -1.5), (-2.1, -0.19), (-1.5, 1.0)์
๋๋ค. ์ด ์ค ์ ์๋ก๋ง ํํ๋๋ ์ขํ๋ (4, 1), (4, -4), (-4, -4), (-4, 1), (0, 4)์
๋๋ค.
๋ง์ฝ ์ ์๋ก ํํ๋๋ ๊ต์ ์ ๋ณ์ ๊ทธ๋ฆฌ๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.

์์ ๊ทธ๋ฆผ์ ๋ฌธ์์ด๋ก ๋ํ๋ผ ๋, ๋ณ์ด ๊ทธ๋ ค์ง ๋ถ๋ถ์ *, ๋น ๊ณต๊ฐ(๊ฒฉ์์ ์ด ๊ต์ฐจํ๋ ์ง์ )์ .์ผ๋ก ํํํ๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
"..........."
".....*....."
"..........."
"..........."
".*.......*."
"..........."
"..........."
"..........."
"..........."
".*.......*."
"..........."
์ด๋ ๊ฒฉ์ํ์ ๋ฌดํํ ๋์ผ๋ ๋ชจ๋ ๋ณ์ ํฌํจํ๋ ์ต์ํ์ ํฌ๊ธฐ๋ง ๋ํ๋ด๋ฉด ๋ฉ๋๋ค.
๋ฐ๋ผ์ ์ ๋ต์
"....*...."
"........."
"........."
"*.......*"
"........."
"........."
"........."
"........."
"*.......*"
์ ๋๋ค.
์ง์ A, B, C์ ๋ํ ์ ๋ณด๊ฐ ๋ด๊ธด ๋ฐฐ์ด line์ด ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง๋๋ค. ์ด๋ ๋ชจ๋ ๋ณ์ ํฌํจํ๋ ์ต์ ์ฌ๊ฐํ์ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.
์ ํ์ฌํญ
- line์ ์ธ๋ก(ํ) ๊ธธ์ด๋ 2 ์ด์ 1,000 ์ดํ์ธ ์์ฐ์์
๋๋ค.
- line์ ๊ฐ๋ก(์ด) ๊ธธ์ด๋ 3์ ๋๋ค.
- line์ ๊ฐ ์์๋ [A, B, C] ํํ์ ๋๋ค.
- A, B, C๋ -100,000 ์ด์ 100,000 ์ดํ์ธ ์ ์์ ๋๋ค.
- ๋ฌด์ํ ๋ง์ ๊ต์ ์ด ์๊ธฐ๋ ์ง์ ์์ ์ฃผ์ด์ง์ง ์์ต๋๋ค.
- A = 0์ด๋ฉด์ B = 0์ธ ๊ฒฝ์ฐ๋ ์ฃผ์ด์ง์ง ์์ต๋๋ค.
- ์ ๋ต์ 1,000 * 1,000 ํฌ๊ธฐ ์ด๋ด์์ ํํ๋ฉ๋๋ค.
- ๋ณ์ด ํ ๊ฐ ์ด์ ๊ทธ๋ ค์ง๋ ์ ๋ ฅ๋ง ์ฃผ์ด์ง๋๋ค.
์ ์ถ๋ ฅ ์

๋๊ฒ ์ฌ์ด ๋ฌธ์์ด ์ฒ๋ฆฌ ๋ฌธ์ ๊ฐ์๋ฐ,
์๊ฐ๋ณด๋ค๋ ๊ณ ๋ คํด์ผ ๋ ์ ์ด ๋ช๊ฐ์ง ์๋ค.

์ฐธ๊ณ ์ฌํญ์ด ์์์ผ๋ฉด ์ด๋ ค์ ๊ฒ ์ง๋ง.. ์์ด์ ๊ทธ๋๋ ๊ฐ๋จํ๊ฒ ํ ์ ์์๋ค.
ใ ใ
์๊ฐํ๋ ์์ด๋์ด๋ ๋ค์๊ณผ ๊ฐ๋ค.:
- ์ ๋ ฅ๋ฐ์ ์ ๋ผ๋ฆฌ์ ๋ชจ๋ ์กฐํฉ์ ํตํด ๊ต์ ์ ๊ณ์ฐํด์ค๋ค.
- ์ง์ ์ด ์๋ก ํํํ๊ฑฐ๋ ์ผ์นํ์ฌ ๊ธฐ์ธ๊ธฐ๊ฐ 0์ธ ๊ฒฝ์ฐ๋ฅผ ์ ์ธํ๊ณ ๊ต์ ์ ๊ณ์ฐํด์ฃผ๋,
๊ต์ ์ ์ขํ๊ฐ ์ ์์ธ ๊ฒฝ์ฐ์๋ง ์ขํ ๋ฐฐ์ด์ ์ขํ ์ ๋ณด๋ฅผ ์ถ๊ฐํ๋ค.
for i in range(len(line)):
for j in range(i + 1, len(line)):
if incline(line[i], line[j]) == 0:
continue
else:
x, y = cross(line[i], line[j])
if(x == int(x) and y == int(y)):
coord.append([x, y])
- ์ขํ ๋ฐฐ์ด๋ก๋ถํฐ ์ต๋/์ต์ ๋ฐ์ด๋๋ฆฌ๋ฅผ ํ์ ํด์ฃผ๊ธฐ ์ํด x, y ๊ฐ๊ฐ ์ต๋๊ฐ๊ณผ ์ต์๊ฐ์ ์ ์ฅํด๋๋ค.
- ์ต๋์ต์ ๋ฐ์ด๋๋ฆฌ๋งํผ '.' ๋ง ๋ด๊ธด temp ๋ฐฐ์ด์ ์ ์ธํด์ฃผ๊ณ ,
๊ต์ ์ด ๋ค์ด๊ฐ๋ ์์น์๋ '*'๋ก ๋ฐ๊ฟ์ค๋ค.
์ด๋ ์ค์ํ ์์ ์
์ ๋ ฅ๋ฐ์ ์ขํ๊ณ์ ์ปดํจํฐ ๋ฐฐ์ด์ ์์น๋ฅผ ์ผ์น์์ผ์ฃผ๋ ๊ฒ์ด๋ค.
for i in coord:
temp[y_max - int(i[1])][int(i[0]) - x_min] = '*'

์ด๋ ๊ฒ ๋ฐ๊ฟ์ค ํ,
answer ๋ฐฐ์ด์ join์ ํตํด ๋ฌธ์์ด๋ก ๋ณํํด์ฃผ๋ฉด ๋!!
for i in range(len(temp)):
answer[i] = ''.join(temp[i])
์ฝ๋
def incline(line1, line2):
inc = (line1[0] * line2[1] - line1[1] * line2[0])
return inc
def cross(line1, line2):
x = (line1[1] * line2[2] - line1[2] * line2[1])
y = (line1[2] * line2[0] - line1[0] * line2[2])
inc = incline(line1, line2)
return [x / inc, y / inc]
def solution(line):
coord = []
for i in range(len(line)):
for j in range(i + 1, len(line)):
if incline(line[i], line[j]) == 0:
continue
else:
x, y = cross(line[i], line[j])
if(x == int(x) and y == int(y)):
coord.append([x, y])
x_list = [i[0] for i in coord]
y_list = [i[1] for i in coord]
x_min = int(min(x_list))
x_max = int(max(x_list))
y_min = int(min(y_list))
y_max = int(max(y_list))
temp = [['.'] * (x_max - x_min + 1) for _ in range(y_max - y_min + 1)]
for i in coord:
temp[y_max - int(i[1])][int(i[0]) - x_min] = '*'
answer = ['' for _ in range(y_max - y_min + 1)]
for i in range(len(temp)):
answer[i] = ''.join(temp[i])
return answer
'์ฝ๋ฉํ ์คํธ ์ค๋น > ํ๋ก๊ทธ๋๋จธ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก๊ทธ๋๋จธ์ค] [PCCP ๊ธฐ์ถ๋ฌธ์ ] 2๋ฒ / ์์ ์์ถ - C++ (0) | 2025.03.17 |
---|---|
[ํ๋ก๊ทธ๋๋จธ์ค] ํ๋ฐฐ ๋ฐฐ๋ฌ๊ณผ ์๊ฑฐํ๊ธฐ - ํ์ด์ฌ (1) | 2024.11.14 |
[ํ๋ก๊ทธ๋๋จธ์ค] ๋ถ๋ ์ฌ์ฉ์ - C++ (0) | 2024.11.12 |
[ํ๋ก๊ทธ๋๋จธ์ค] N-Queen - C++ (0) | 2024.11.11 |
[ํ๋ก๊ทธ๋๋จธ์ค] ์ฌํ๊ฒฝ๋ก - C++ (0) | 2024.11.08 |