알고리즘 문제풀이

백준 13300 방 배정 Python 서브태스크

아크몽 2024. 2. 18. 19:57

소요시간 22분

리스트로 해보려 하다가 중복값을 처리할 방법이 생각나지 않아

딕셔너리를 이용하는것이 좋을 것 같아서 사용해봄

N,K = map(int,input().split())
# w_arr = []
w_arr = {1:0,2:0,3:0,4:0,5:0,6:0}
# m_arr = []
m_arr = {1:0,2:0,3:0,4:0,5:0,6:0}

for i in range(N):
    S, Y = map(int, input().split()) # 성별(0,1), 학년(1~6)
    if S == 0: #여학생
        # m_arr.append(Y)
        w_arr[Y] += 1
    else:
        # m_arr.append(Y)
        m_arr[Y] += 1
room_max = 0
s_max = 0
for i in w_arr.keys():
    if w_arr[i] >= K:
        room_max += (w_arr[i]-1)//K + 1
    elif w_arr[i] ==0:
        pass
    else:
        room_max += 1
for i in m_arr.keys():
    if m_arr[i] >= K:
        room_max += (m_arr[i]-1)//K + 1
    elif m_arr[i] ==0:
        pass
    else:
        room_max += 1
print(room_max)