DevYoon
[ํ๋ก๊ทธ๋๋จธ์ค] ์ธ์ฌ ๊ณ ๊ณผ (Python) ๋ณธ๋ฌธ
link ๐ https://school.programmers.co.kr/learn/courses/30/lessons/152995
๋ฌธ์ ์ค๋ช
์ํธ๋ค ํ์ฌ๋ ์ฐ๋ง๋ง๋ค 1๋ ๊ฐ์ ์ธ์ฌ๊ณ ๊ณผ์ ๋ฐ๋ผ ์ธ์ผํฐ๋ธ๋ฅผ ์ง๊ธํฉ๋๋ค. ๊ฐ ์ฌ์๋ง๋ค ๊ทผ๋ฌด ํ๋ ์ ์์ ๋๋ฃ ํ๊ฐ ์ ์๊ฐ ๊ธฐ๋ก๋์ด ์๋๋ฐ ๋ง์ฝ ์ด๋ค ์ฌ์์ด ๋ค๋ฅธ ์์์ ์ฌ์๋ณด๋ค ๋ ์ ์๊ฐ ๋ชจ๋ ๋ฎ์ ๊ฒฝ์ฐ๊ฐ ํ ๋ฒ์ด๋ผ๋ ์๋ค๋ฉด ๊ทธ ์ฌ์์ ์ธ์ผํฐ๋ธ๋ฅผ ๋ฐ์ง ๋ชปํฉ๋๋ค. ๊ทธ๋ ์ง ์์ ์ฌ์๋ค์ ๋ํด์๋ ๋ ์ ์์ ํฉ์ด ๋์ ์์ผ๋ก ์์ฐจ๋ฅผ ๋ด์ด ์์ฐจ์ ๋ฐ๋ผ ์ธ์ผํฐ๋ธ๊ฐ ์ฐจ๋ฑ ์ง๊ธ๋ฉ๋๋ค. ์ด๋, ๋ ์ ์์ ํฉ์ด ๋์ผํ ์ฌ์๋ค์ ๋์์ฐจ์ด๋ฉฐ, ๋์์ฐจ์ ์๋งํผ ๋ค์ ์์ฐจ๋ ๊ฑด๋ ๋๋๋ค. ์๋ฅผ ๋ค์ด ์ ์์ ํฉ์ด ๊ฐ์ฅ ํฐ ์ฌ์์ด 2๋ช ์ด๋ผ๋ฉด 1๋ฑ์ด 2๋ช ์ด๊ณ 2๋ฑ ์์ด ๋ค์ ์์ฐจ๋ 3๋ฑ๋ถํฐ์ ๋๋ค.
๊ฐ ์ฌ์์ ๊ทผ๋ฌด ํ๋ ์ ์์ ๋๋ฃ ํ๊ฐ ์ ์ ๋ชฉ๋ก scores์ด ์ฃผ์ด์ก์ ๋, ์ํธ์ ์์ฐจ๋ฅผ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.
์ ํ ์ฌํญ
- 1 ≤ scores์ ๊ธธ์ด ≤ 100,000
- scores์ ๊ฐ ํ์ ํ ์ฌ์์ ๊ทผ๋ฌด ํ๋ ์ ์์ ๋๋ฃ ํ๊ฐ ์ ์๋ฅผ ๋ํ๋ด๋ฉฐ [a, b] ํํ์
๋๋ค.
- scores[0]์ ์ํธ์ ์ ์์ ๋๋ค.
- 0 ≤ a, b ≤ 100,000
- ์ํธ๊ฐ ์ธ์ผํฐ๋ธ๋ฅผ ๋ฐ์ง ๋ชปํ๋ ๊ฒฝ์ฐ -1์ return ํฉ๋๋ค.
๐ฅ ๊ทผ๋ฌดํ๋์ ๋๋ฃ ํ๊ฐ ์ ์๋ฅผ ๊ธฐ์ค์ผ๋ก ์ญ์ ์ ๋ ฌํ์ฌ ๋๋ฃ ํ๊ฐ ์ ์๋ง ๋น๊ตํด์ for๋ฌธ ์ฌ์ฉ ํ์๋ฅผ ์ค์ด๋ ๊ฒ๊น์ง ์์ด๋์ด๋ฅผ ์๊ฐํด ์์ฑํ๋๋ฐ... ๋ญ๊ฐ ๋ ๊ฐ๋จํ๊ฒ ์์ฑํ ์ ์์ง ์์๊น ์ถ์๋ค๐ค scores์ ์ต๋ ๊ธธ์ด๊ฐ 10๋ง์ด๊ธฐ์ ์๊ฐ์ด๊ณผ๊ฐ ๋์ง ์์๊น ํ๋๋ฐ, ์๋๋ ๋ค๋ฅผ๊น ์๊ฐ์ด๊ณผ๊ฐ...!!
๐ฅ ๋ค๋ฅธ ๋ถ์ ์ฝ๋๋ฅผ ๋ณด๋ฉฐ ์ ๋ ฌ์ ํ๋, ๊ทผ๋ฌดํ๋๋ ์ญ์, ๋๋ฃ ํ๊ฐ๋ ๊ธฐ๋ณธ ์์๋ก ์ ๋ ฌํ๋ฉด ์ด์คfor๋ฌธ์ ํ์ฉํ์ง ์์๋ ๋๋ค๋ ๊ฑธ ๊นจ๋ฌ์๋ค!
def solution(scores):
answer = 1
wanho = scores[0]
length = len(scores)
# ๊ทผ๋ฌดํ๋๋ฅผ ๊ธฐ์ค์ผ๋ก ์ญ์ ์ ๋ ฌ, ๋๋ฃ ํ๊ฐ๋ฅผ ๊ธฐ์ค์ผ๋ก ๊ธฐ๋ณธ ์ ๋ ฌ
scores.sort(key=lambda x: (-x[0], x[1]))
# ์ต๋ ๋๋ฃ ํ๊ฐ ์ ์
max_coworker = 0
# ์ธ์ผํฐ๋ธ ๊ฐ๋ฅ ์ฌ๋ถ
check = [True]*length
for idx in range(length):
# ์ต๋ ๋๋ฃ ํ๊ฐ์ ์ ์๊ฐ ๊ฐ๊ฑฐ๋ ํฌ๋ค๋ฉด?
# ๊ทผ๋ฌดํ๋๊ฐ ๋ณธ์ธ ์ ์๋ณด๋ค ๋์ ์ฌ๋ ์ค ๋๋ฃํ๊ฐ ์ ์๊น์ง ๋ ๋์ ์ฌ๋์ ์์ -> ์ธ์ผํฐ๋ธ ๊ฐ๋ฅ
if max_coworker <= scores[idx][1]:
# ์ต๋ ๋๋ฃ ํ๊ฐ ๊ต์ฒด
max_coworker = scores[idx][1]
# ํฉ์ฐ ์ ์๊ฐ ์ํธ์ ์ ์๋ณด๋ค ๋๋ค -> ๋ ๋์ ๋ฑ์ -> answer ++
if sum(scores[idx]) > sum(wanho):
answer += 1
# ์ต๋ ๋๋ฃ ํ๊ฐ ์ ์๋ณด๋ค ์ ๋ค๋ฉด?
# ๊ทผ๋ฌดํ๋์ ๋๋ฃํ๊ฐ ์ ์ ๋ชจ๋ ๋ณธ์ธ ์ ์๋ณด๋ค ๋์ ์ฌ๋ ์กด์ฌ
elif max_coworker > scores[idx][1]:
# ์ธ์ผํฐ๋ธ ๋ถ๊ฐ๋ฅ ํ๊ธฐ
check[idx] = False
# ์ ์ ๊ตฌ์ฑ์ด ์ํธ์ ๊ฐ๋ค๋ฉด ์ํธ๋ ์ธ์ผํฐ๋ธ ๋ถ๊ฐ๋ฅ -> -1 ๋ฆฌํด
if scores[idx] == wanho:
return -1
return answer