관리 메뉴

솜씨좋은장씨

[BaekJoon] 7785번 : 회사에 있는 사람 (Python) 본문

Programming/코딩 1일 1문제

[BaekJoon] 7785번 : 회사에 있는 사람 (Python)

솜씨좋은장씨 2021. 7. 1. 15:22
728x90
반응형

오늘의 문제는 백준의 회사에 있는 사람 입니다.

 

7785번: 회사에 있는 사람

첫째 줄에 로그에 기록된 출입 기록의 수 n이 주어진다. (2 ≤ n ≤ 106) 다음 n개의 줄에는 출입 기록이 순서대로 주어지며, 각 사람의 이름이 주어지고 "enter"나 "leave"가 주어진다. "enter"인 경우는

www.acmicpc.net

Solution 1

def company_people(access_record):
    record_dict = {}
    
    for access in access_record:
        name, status = access.split()
        
        if status == "enter":
            record_dict[name] = status
        else:
            del record_dict[name]
        
    return sorted(list(record_dict.keys()), reverse=True)

if __name__ == "__main__":
    access_record = []
    for _ in range(int(input())):
        access = input()
        access_record.append(access)
        
    people = company_people(access_record)
    
    for person in people:
        print(person)

Solution 1 풀이

먼저 첫번째로는 dictionary를 활용하여 문제를 풀어보았습니다.

출입기록을 받아서 공백으로 split 하여 앞 단어는 이름, 뒷 단어는 출근 또는 퇴근 상태로 나누고

출근(enter)일 경우 record_dict dictionary에 이름을 키로 하여 상태를 넣어주고

퇴근(leave)일 경우 record_dict에서 이름을 키로하여 제거한 후

마지막으로 남아있는 사람의 이름을 사전의 역순으로 정렬하여 해결하였습니다.

Solution 2

def company_people(access_record):
    record_dict = {}
    
    for access in access_record:
        name, status = access.split()
        record_dict[name] = status        
        
    return sorted([record[0] for record in record_dict.items() if record[1] == "enter"], reverse=True)

if __name__ == "__main__":
    access_record = []
    for _ in range(int(input())):
        access = input()
        access_record.append(access)
        
    people = company_people(access_record)
    
    for person in people:
        print(person)

Solution 2 풀이

이번에도 dictionary를 사용하는데

출입기록을 받아서 공백으로 split 하여 앞 단어는 이름, 뒷 단어는 출근 또는 퇴근 상태로 나눈다음

이름을 키로 상태를 계속 넣어주다가

모든 데이터 속에서 출근상태로 되어있는 사람들의 이름을 가져와 사전의 역순으로 정렬한 다음 출력했습니다.

더 빠를까 싶었지만!

 

SOMJANG/CODINGTEST_PRACTICE

1일 1문제 since 2020.02.07. Contribute to SOMJANG/CODINGTEST_PRACTICE development by creating an account on GitHub.

github.com

Comments