문제
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 |
댓글