[BOJ]백준#11101 Silver 4 꿍의 여친 만들기💞🤵 (Python, 파이썬)

임준성·2022년 8월 11일
0

백준 Algorithm

목록 보기
48/59
post-thumbnail

백준 11101번
https://www.acmicpc.net/problem/11101

문제



후기

⏰ 풀이시간 40분 ++⏰

맞힌 사람이 많지 않은 문제를 풀기 위해 풀은 사람이 적은 순으로 정렬해서

찾은 문제의 6번째다. 문제의 결론을 이야기 하자면,

문자열의 입출력과 슬라이싱, 파싱에 대한 이해도를 요구로 하는 문제였다.

여러 그룹들이 존재할 때, 그 중 가장 시간이 덜 소요되는 그룹을 고르게 되고,
각각의 그룹에서 소요되는 시간은 각 그룹의 요소중 가장 오래 걸리는 시간이 해당 그룹의 소요시간이다.

EX)

A그룹이 (2 , 4 , 8)이 걸린다고 하고, B그룹이 (4, 6 ) 걸린다고 하면

우선 A그룹중 가장 시간이 많이 걸리는 8이 A그룹의 소요시간이다.

그리고 B그룹중 가장 시간이 많이 걸리는 6이 B그룹의 소요시간이다.

그러면 A그룹은 8, B는 6이 걸리니 B그룹의 시간인 6을 출력하면 되는것이다.

문제에서 요구받은 조건을 여러개의 리스트로 관리해서 실수 없이 출력하는 것을 우선 순위로 했다.

자세한 설명은 주석으로 작성했다.

나의 풀이

import sys
input= sys.stdin.readline

T = int(input())
for _ in range(T):
    result = 1001 # 최소의 시간
    work = list(map(str,input().rstrip().split(","))) #,를 기준으로 나눠서받고
    need = list(map(str,input().rstrip().split("|"))) #|를 기준으로 나눠서 받는다.
    li= dict()
    work_time = []
  
    new_need = [] #:를 기준으로 나뉠 조건들
    new_work = [] #&를 기준으로 나뉠 조건들


    for i in work: #:를 기준으로 시간을 저장한다.  
        i= i.split(":") #intelligient : 0 이라고 했을때
        new_work.append(i[0]) # new_work에는 intelligent를 저장
        work_time.append(int(i[1])) #work time에는  0을 저장한다.
    
    for i in need: #& 를 기준으로 무엇이 필요한지 저장한다.
        i= i.split("&") 
        new_need.append(i) #필요한 요소를 따로따로 new need에 저장한다.
    
    for i in range(len(new_work)): 
        li[new_work[i]] = work_time[i] #어떠한 요소의 소요 시간을 dictionary 형태로 저장한다.
    
    for i in new_need: 
        check = 0 #해당 그룹의 각각의 요소의 소요시간 초기화
        for j in i:
            for key, values in li.items():
                if j==key: 
                    if values > check: # 2, 4 ,6이 있다고 하면 6이 소요시간이므로 
                        check = values # 가장 오래걸리는 시간으로 교체한다.
        
        if check < result: # 여러개의 그룹중 시간이 적게 걸리는 방법을 택할것이므로
            result = check # 지금까지 나온 그룹보다 시간이 적게 걸리는 그룹이 있으면 그 시간으로 교체한다.
    
    print(result)
profile
아무띵크 있이

0개의 댓글