Part3.5_이분탐색(결정알고리즘)&그리디 알고리즘_회의실 배정(그리디)

Eugenius1st·2022년 1월 13일
0

Python_algorithm

목록 보기
11/83

그리디를 잘 모르겠어서 강의 봐버렸다..

튜플 자료구조로 만들어서 끝나는 시간으로 정렬하여 계산 하더라..
튜플로 값을 넣을때는
list = []
a, b = map(int, input().split())
list.append( (a,b) )로 넣더라

이때 람다함수 사용하는데 sort(key = lambda x : (x[1],x[0]))

이렇게 쓰고,

튜플이므로 for문 쓸때도
for x,y in 튜플

선생님 코드


#1. Alt+W+N 입력하고 Alt+W+V :

import sys
sys.stdin = open("input.txt", "rt")
# 회의가 끝나는 시간으로 정렬을 해야한다. << 빨리 끝나는게 중요하기 때문에..
#2 3 >> 다음 끝나는 회의 찾기 >> 시작시간 비교하기
#1 4 >> 끝나는 시간 보다 시작하는 시간 크거나 같으면 회의 진행 가능
#3 5
#4 6
#5 7
n = int(input())
meeting = []
for i in range(n):
     s, e= map(int, input().split())
     meeting.append((s,e)) # 튜플 형태로 넣는다.
meeting.sort(key=lambda x :(x[1],x[0])) #x는 매개변수이고, x[1]의 기준으로 sort하게 된다.
et=0
cnt=0

for start, end in meeting:
    if start>=et:
        et = end
        cnt +=1
print(cnt)

내가 다시 푼 코드

#1. Alt+W+N 입력하고 Alt+W+V :

import sys
sys.stdin = open("input.txt", "rt")

n = int(input())
a = []
for _ in range(n):
    s, e= map(int,input().split())
    a.append((s,e))

a.sort(key = lambda x: (x[1],x[0]))

cnt = 0
et = 0

for start, end in a:
    if start >= et:
        cnt += 1
        et = end
print(cnt)

et 개념에서 버벅였다. 다음 문제는 내 힘으로 풀어보자..

profile
최강 프론트엔드 개발자가 되고싶은 안유진 입니다

0개의 댓글