반응형
https://www.acmicpc.net/problem/28068
I Am Knowledge 문제
마법사의 즐거움 수치에 따라 책을 다 읽을 수 있는지 없는지 판별하는 문제
정렬과 그리디를 활용하여 해결할 수 있었다.
📌문제 접근 포인트
1. 아직 읽지 않은 책을 읽을 때 a만큼 즐거움 수치소비하고, 읽을 시 b만큼 즐거움 수치를 얻는다. 단, 즐거움 수치가 0 미만이 되면 안된다.
2. b가 a보다 큰 경우, 즐거움 수치를 얻는 형태의 책들이고, b가 a보다 작으면 읽을 경우 즐거움 수치가 감소하는 형태의 책들이다. 그렇기에 우선적으로 즐거움 수치를 얻는 형태의 책들을 다 읽어보고, 즐거움 수치가 감소하는 형태의 책들을 다 탐색하면 가능한지 여부를 파악할 수 있다.
3. 해당 조건에 맞게 구성하면 해결 !
⚙ 내가 푼 정답 코드
import sys
N = int(sys.stdin.readline())
happy, unhappy = [], []
for _ in range(N):
a, b = map(int, sys.stdin.readline().split())
if b-a >= 0:
happy.append((a,b))
else :
unhappy.append([a,b])
happy.sort(key = lambda x: (x[0], -x[1])) # x[1] > x[0]인 내용물을 x[0]을 기준으로 오름차순, x[1]을 기준으로 내림차순 정렬
unhappy.sort(key = lambda x: (-x[1], x[0])) # x[1] < x[0]인 내용물을 x[1]을 기준으로 내림차순, x[0]을 기준으로 오름차순 정렬
fun = 0
result = 1
for y, x in happy + unhappy:
if fun < y:
result = 0
break
fun -= y
fun += x
print(result)
반응형
'알고리즘 풀이 > 백준' 카테고리의 다른 글
[백준 17298] 오큰수 (python) (0) | 2023.05.31 |
---|---|
[백준 17135] 캐슬 디펜스(python) (0) | 2023.05.30 |
[백준 2580] 스도쿠 (python) (0) | 2023.05.21 |
[백준 10798] 세로읽기 (Java) (0) | 2023.05.17 |
[백준 2212] 센서 (python) (0) | 2023.05.16 |
댓글