알고리즘 공부/파이썬(Python)

백준 13300번 방 배정 파이썬

마달랭 2024. 6. 25. 17:27
반응형

리뷰

이 문제를 푸는데에는 많은 방법이 있겠지만 딕셔너리로 풀어보고 싶어서 딕셔너리로 풀었다.

문제 풀이

우선 남학생과 여학생용 딕셔너리를 생성해 주고 key값을 학년으로 설정한다. 물론 value는 0으로 초기화

성별과 학년 값을 받아주고 성별이 1일경우 딕셔너리1의 학년 값을 1 올려준다. 반대일 경우 딕셔너리2 활용

각 딕셔너리의 값 리스트를 받아 방의 최대인원으로 나눠준 후 math 모듈의 ceil 함수를 사용해 값을 더해준 뒤 출력

참고 사항

딕셔너리를 사용하면 시간복잡도에서 유리하다.

정답 코드

def q13300():
    # 백준 13300번 방 배정 파이썬
    import math

    n, k = map(int, input().split())
    dic1 = {1: 0, 2: 0, 3: 0, 4: 0, 5: 0, 6: 0}
    dic2 = {1: 0, 2: 0, 3: 0, 4: 0, 5: 0, 6: 0}
    for _ in range(n):
        s, y = map(int, input().split())
        if s:
            dic1[y] += 1
        else:
            dic2[y] += 1
    result = 0
    for val in dic1.values():
        result += math.ceil(val / k)
    for val in dic2.values():
        result += math.ceil(val / k)
    print(result)
q13300()

 

728x90
반응형