====== 입실 퇴실 ====== ===== 풀이 ===== * 레벨에 비해서는 다소 까다로운 문제. 아이디어도 떠올려야하고, 그 아이디어를 효율적으로 구현할수 있는 방식도 떠올려야 한다 * 단순하게 A와 B만 갖고서 생각하면 A가 B와 만난것을 확신하기 위한 조건은, B보다 일찍 입실하고 늦게 퇴실한 경우에만 가능한 것처럼 보인다. 예를 들어서 A가 B보다 먼저 입실하고 먼저 퇴실했다면, B의 입실보다 A의 퇴실이 더 빨랐을 경우에는 만나지 못한다. 하지만 C가 추가되면, 똑같이 A가 B보다 먼저 입실하고 먼저 퇴실했어도 A와 B가 만난것을 확신할 수 있는 경우가 생긴다. 예를들면 입실시간이 A """Solution code for "Programmers 86048. 입실 퇴실". - Problem link: https://programmers.co.kr/learn/courses/30/lessons/86048 - Solution link: http://www.teferi.net/ps/problems/programmers/86048 """ def solution(enter, leave): people_count = len(enter) # met_people_count[X] = {number of people who entered before X left} # - {number of people who left before X entered} met_people_count = [None] * people_count leave_count = 0 for enter_count, person in enumerate(enter): met_people_count[person - 1] = -leave_count while leave_count < people_count: person_to_leave = leave[leave_count] if met_people_count[person_to_leave - 1] is None: break met_people_count[person_to_leave - 1] += enter_count leave_count += 1 return met_people_count {{tag>프로그래머스 ps:problems:programmers:Level_2}}