백준 28214번 크림빵 - Python

    문제

    https://www.acmicpc.net/problem/28214


    문제 해석

    입력

    정수 N, K, P와 빵의 정보가 입력된다.
    N은 빵 묶음의 수, K는 빵 한 묶음 당 빵의 개수, P는 크림이 없는 빵의 최대치이다.
    빵의 정보는 이진수 배열로 입력되며 1은 크림이 있는 빵, 0은 크림이 없는 빵을 나타낸다.

    출력

    크림이 없는 빵인 P개 미만인 묶음의 수를 출력한다.


    풀이

    1번 풀이

    첫 번째 반복문에는 빵 묶음의 개수, 두 번째 반복문에서는 한 묶음 당 빵의 개수 동안 2중 반복문을 돈다.
    안쪽 반복문을 도는 동안 0의 개수를 카운트하고, 저장한 뒤, 카운트 한 변수를 초기화 한다.
    바깥쪽 반복문이 끝난 뒤, 판매 가능한 빵의 개수를 출력한다.

    N, K, P = map(int, input().split())
    B = list(map(int, input().split()))
    available = 0
    
    for i in range(N):
        count = 0
        for j in range(K):
            if B[i*K+j] == 0:
                count += 1
        if count < P:
            available += 1
    
    print(available)

    2번 풀이

    빵의 정보가 0과 1의 리스트로 저장되는 것을 이용한다.
    묶음의 수만큼 반복문을 돌며 인덱스 슬라이싱으로 빵 묶음 당 빵의 개수만큼 리스트를 자른다.
    자른 리스트의 합계로 크림이 없는 빵의 수를 구하고 팔 수 있는 묶음의 개수를 출력한다.

    N, K, P = map(int, input().split())
    B = list(map(int, input().split()))
    available = 0
    
    for i in range(N):
        b = B[i*K:i*K+K]
        if K - sum(b) < P:
            available += 1
    
    print(available)

    1번 풀이에 비해 유의미한 성능 향상은 없지만, 코드가 많이 간결해졌다.

    'Algorithm Study' 카테고리의 다른 글

    백준 9506번 약수들의 합  (0) 2024.02.18
    백준 27433번 팩토리얼 2 - Python  (0) 2024.02.18
    백준 28215번 대피소 - Python  (0) 2024.02.18
    백준 2745 진법 변환 (Python)  (0) 2024.02.18
    백준 2563 색종이 (Python)  (0) 2024.02.18

    댓글