728x90
๋ฐ์ํ
https://school.programmers.co.kr/learn/courses/30/lessons/181188
ํ๋ก๊ทธ๋๋จธ์ค
์ฝ๋ ์ค์ฌ์ ๊ฐ๋ฐ์ ์ฑ์ฉ. ์คํ ๊ธฐ๋ฐ์ ํฌ์ง์ ๋งค์นญ. ํ๋ก๊ทธ๋๋จธ์ค์ ๊ฐ๋ฐ์ ๋ง์ถคํ ํ๋กํ์ ๋ฑ๋กํ๊ณ , ๋์ ๊ธฐ์ ๊ถํฉ์ด ์ ๋ง๋ ๊ธฐ์ ๋ค์ ๋งค์นญ ๋ฐ์ผ์ธ์.
programmers.co.kr
"""
A ๋๋ผ๊ฐ B ๋๋ผ๋ฅผ ์นจ๊ณตํ์์ต๋๋ค. B ๋๋ผ์ ๋๋ถ๋ถ์ ์ ๋ต ์์์
์์ด๊ธฐ์ค ๊ตฐ์ฌ ๊ธฐ์ง์ ์ง์ค๋์ด ์๊ธฐ ๋๋ฌธ์ A ๋๋ผ๋ B ๋๋ผ์
์์ด๊ธฐ์ค ๊ตฐ์ฌ ๊ธฐ์ง์ ์ต๋จํญ๊ฒฉ์ ๊ฐํ์ต๋๋ค.
A ๋๋ผ์ ๊ณต๊ฒฉ์ ๋ํญํ์ฌ ์์ด๊ธฐ์ค ๊ตฐ์ฌ ๊ธฐ์ง์์๋
๋ฌด์ํ ์์์ง๋ ํญ๊ฒฉ ๋ฏธ์ฌ์ผ๋ค์ ์๊ฒฉํ๋ ค๊ณ ํฉ๋๋ค.
์ด๊ณณ์๋ ๋ฐฑ๋ฐ๋ฐฑ์ค์ ์๋ํ๋ ์๊ฒฉ ์์คํ
์ด ์์ง๋ง ์ด์ฉ ๋น์ฉ์ด ์๋นํ๊ธฐ ๋๋ฌธ์
๋ฏธ์ฌ์ผ์ ์ต์๋ก ์ฌ์ฉํด์ ๋ชจ๋ ํญ๊ฒฉ ๋ฏธ์ฌ์ผ์ ์๊ฒฉํ๋ ค ํฉ๋๋ค.
A ๋๋ผ์ B ๋๋ผ๊ฐ ์ธ์ฐ๊ณ ์๋ ์ด ์ธ๊ณ๋ 2 ์ฐจ์ ๊ณต๊ฐ์ผ๋ก ์ด๋ฃจ์ด์ ธ ์์ต๋๋ค.
A ๋๋ผ๊ฐ ๋ฐ์ฌํ ํญ๊ฒฉ ๋ฏธ์ฌ์ผ์ x ์ถ์ ํํํ ์ง์ ํํ์ ๋ชจ์์ด๋ฉฐ
๊ฐ๊ตฌ๊ฐ์ ๋ํ๋ด๋ ์ ์ ์ (s, e) ํํ๋ก ํํ๋ฉ๋๋ค.
B ๋๋ผ๋ ํน์ x ์ขํ์์ y ์ถ์ ์ํ์ด ๋๋๋ก ๋ฏธ์ฌ์ผ์ ๋ฐ์ฌํ๋ฉฐ,
๋ฐ์ฌ๋ ๋ฏธ์ฌ์ผ์ ํด๋น x ์ขํ์ ๊ฑธ์ณ์๋ ๋ชจ๋ ํญ๊ฒฉ ๋ฏธ์ฌ์ผ์ ๊ดํตํ์ฌ ํ ๋ฒ์ ์๊ฒฉํ ์ ์์ต๋๋ค.
๋จ, ๊ฐ๊ตฌ๊ฐ (s, e)๋ก ํํ๋๋ ํญ๊ฒฉ ๋ฏธ์ฌ์ผ์ s์ e์์
๋ฐ์ฌํ๋ ์๊ฒฉ ๋ฏธ์ฌ์ผ๋ก๋ ์๊ฒฉํ ์ ์์ต๋๋ค.
์๊ฒฉ ๋ฏธ์ฌ์ผ์ ์ค์์ธ x ์ขํ์์๋ ๋ฐ์ฌํ ์ ์์ต๋๋ค.
๊ฐ ํญ๊ฒฉ ๋ฏธ์ฌ์ผ์ x ์ขํ ๋ฒ์ ๋ชฉ๋ก targets์ด ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง ๋,
๋ชจ๋ ํญ๊ฒฉ ๋ฏธ์ฌ์ผ์ ์๊ฒฉํ๊ธฐ ์ํด ํ์ํ ์๊ฒฉ ๋ฏธ์ฌ์ผ ์์ ์ต์๊ฐ์
return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด ์ฃผ์ธ์.
"""
def solution(t):
lines, overlap = 0, {'s': 0, 'e': 0}
for s, e in sorted(t):
if overlap['e'] <= s:
lines += 1
overlap = {'s': s, 'e': e}
else:
overlap = {'s': max(overlap['s'], s), 'e': min(overlap['e'], e)}
return lines
"""
์ฒ์ ๋ฌธ์ ๋ฅผ ๋ณด๊ณ ํธ๋ ๋ฐฉ์์ ์๋ ๋ฏธ์ฌ์ผ ๋ฒ์๊ฐ
๊ฒน์น๋ ๋ถ๋ถ์ด ์์๋๋ง๋ค ๋ฏธ์ฌ์ผ์ ํ๋์ฉ ์ถ๊ฐํด์ผ๊ฒ ๋ค๊ณ ์๊ฐํ๋ค.
๊ทธ๋์ ๋ฏธ์ฌ์ผ๋ฒ์๋ฆฌ์คํธ๋ฅผ ์ ๋ ฌํ์ฌ ํ๋์ฉ for๋ฌธ์ ๋๋ ธ๋ค.
๊ฒน์น๋ ๋ถ๋ถ์ด ์๋ค๋ฉด (if overlap['e'] <= s:) ๋ฏธ์ฌ์ผ์ ํ๋ ์ถ๊ฐํ๊ณ ,
์๋ก์ด ๋ฏธ์ฌ์ผ์ ๊ฒน์น๋ ๋ถ๋ถ์ ๊ธฐ๋กํ์๋ค.
๊ฒน์น๋ ๋ถ๋ถ์ด ์๋ค๋ฉด ํ์ฌ ๊ฒน์ณ์ง๋ ๋ถ๋ถ๊ณผ ์๋ก ์๊ฒฉํด์ผํ ๋ฏธ์ฌ์ผ์ ๋ฒ์๋ฅผ
๋น๊ตํ์ฌ ๊ฒน์ณ์ง๋ ๋ถ์๋ฅผ ์๋กญ๊ฒ ์ ์ด์ผ ํ๋ค.
๊ทธ๋์ ๊ฒน์ณ์ง๋ ์์์ ์ ๋ ์ค์ ๋ ํฐ ์์์ ์ด ๋์ด์ผ ํ๊ณ ,
๊ฒน์ณ์ง๋ ๋์ ์ ๋ ์ค์ ๋ ์์ ๋์ ์ด ๋์ด์ผ ํ๋ค.
-
if overlap['e'] <= s ์ ๋ํด ์ค๋ช
ํ๋ฉด
ํ๊ฒ๋ฆฌ์คํธ๋ฅผ ์ ๋ ฌํ๊ฒ ๋๋ค๋ฉด ์์์ ์ด ์์์๋ถํฐ ์ ๋ ฌ์ด ๋๋ค.
๊ทธ๋์ ๋ฒ์์ ๋๋ณด๋ค ์๊ฒฉํด์ผํ ๋ฏธ์ฌ์ผ์ ์์์ ์ด ํฌ๋ค๋ฉด ๊ฒน์น๋๊ฒ ์๋๋ค.
-
ํน์ ๋ด ๊ธ์ด ์ดํด๊ฐ ์๋ ์๋ ์๊ธฐ ๋๋ฌธ์ ์์๋ฅผ ๋ค์ด๋ณธ๋ค.
์
์ถ๋ ฅ ์์ธ targets = [[4,5],[4,8],[10,14],[11,13],[5,12],[3,7],[1,4]] ๋ผ๋ฉด
๋จผ์ ์ ๋ ฌํ๋ฉด [[1, 4], [3, 7], [4, 5], [4, 8], [5, 12], [10, 14], [11, 13]]
1, 4๋ฅผ ๊บผ๋ด์์ overlap๊ณผ ๋น๊ตํ๋ค.
์ฒ์์๋ overlap ๋๊ฒ ์์ผ๋(0,0) ๋ฏธ์ฌ์ผ์ ํ๋ ์ถ๊ฐํ๊ณ
1, 4๊ฐ ๊ฒน์ณ์ง๋ ๋ฏธ์ฌ์ผ ๋ฒ์๊ฐ ๋๋ค.
ํ์ฌ๋ ํ๋๋ฐ์ ์์ผ๋๊น ์ ํ๋๊ฐ ์ ๋ถ ๊ฒน์ณ์ง๋ค๊ณ ์๊ฐํ๋ฉด ๋๋ค.
3, 7์ ๊บผ๋ด์์ overlap๊ณผ ๋น๊ตํ๋ค.
ํ์ฌ 1~4๊น์ง๊ฐ ๊ฒน์ณ์ง๋ ๋ฒ์์๊ณ , ์ด๋ 3~7๊ณผ ๊ฒน์ณ์ง๋ ๋ถ๋ถ์ด ์๋ค.
๊ทธ๋ผ 1~4 ์ 3~7์ ๊ฒน์ณ์ง๋ ๋ถ๋ถ์ 3~4๊ฐ ๋๋ค.
์ด๊ฑธ {'s': max(overlap['s'], s), 'e': min(overlap['e'], e)}๋ผ๊ณ ์ ์๋ค.
4, 5๋ฅผ ๊บผ๋ด์์ overlap๊ณผ ๋น๊ตํ๋ค.
์ ๋์ ์ ๊ฒน์ณ์ง์ ์๋ค๊ณ ํ์์ผ๋ 3~4์ 4~5๋ ๊ฒน์น๋๊ฒ ์๋ค.
๊ทธ๋์ ์๋ก์ด ๋ฏธ์ฌ์ผ์ ์ถ๊ฐํ๋ค. 2๋ฒ์งธ ๋ฏธ์ฌ์ผ์ ๊ฒน์ณ์ง๋ ๋ถ๋ถ์ 4~5์ด๋ค.
4, 8์ ๊บผ๋ด์์ overlap๊ณผ ๋น๊ตํ๋ค.
4~5์ 4~8์ ๊ฒน์น๋ ๋ถ๋ถ์ด ์๋ค. ๊ฒน์น๋ ๋ถ๋ถ์ ๊ทธ๋๋ก 4~5๊ฐ ๋๋ค.
5, 12๋ 4~5์ ๊ฒน์น์ง ์๊ธฐ ๋๋ฌธ์ ์๋ก์ด ๋ฏธ์ฌ์ผ์ ์ถ๊ฐํ๋ค.
๊ทธ๋ฌ๋ฉด 3๋ฒ์งธ ๋ฏธ์ฌ์ผ๊ณผ ๊ฒน์ณ์ง๋ ๋ถ๋ถ์ 5~12๊ฐ ๋๊ฒ ๋๋ค.
10, 14๋ 5~12์ ๊ฒน์ณ์ง๋ค.
๊ฒน์ณ์ง๋ ๋ฒ์๋ 10~12๊ฐ ๋๊ฒ ๋๋ค.
11, 13์ 10~12์ ๊ฒน์ณ์ง๋ ๋ฒ์๊ฐ ์์ผ๋ฏ๋ก ๊ฒน์ณ์ง๋ ๋ฒ์๋ 11~12์ด๋ค.
for๋ฌธ์ ๋ค ๋์์ผ๋ ์ถ๊ฐํ ๋ฏธ์ฌ์ผ๋ค์ ๋ฆฌํดํด์ค๋ค.
"""
728x90
๋ฐ์ํ
๋๊ธ