일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
Tags
- Java
- c#
- Python
- deque
- LCM
- JPA
- 그리디 알고리즘
- 1일1솔
- 누적합
- pypy3
- 완전탐색
- 브루투포스
- 소수찾기
- C#강의
- 소수판별
- 백준
- popleft
- unity
- DP
- appendleft
- 인프런
- BFS
- spring
- 파이썬
- python3
- 우선순위큐
- mvc
- 합 구하기
- 연관관계
- 프로그래머스
Archives
- Today
- Total
jae_coding
(백준 알고리즘 문제풀이) 3020번 개똥벌레 본문
반응형
문제
문제 접근
- N(짝수): 동굴의 길이
- H: 동굴의 높이
- 종유석과 석순이 번갈아가면서 등장한다
- 종유석: 아래에서부터 등장
- 석순: 위에서부터 등장
- 짝수번째 인덱스: 종유석, 홀수번째 인덱스: 석순으로 지정후 리트스 추가
코드
import sys
N, H = map(int, sys.stdin.readline().split())
up = [0] * (H+1)
down = [0] * (H+1)
count = [0] * (H+1)
for i in range(N):
temp = int(sys.stdin.readline())
if i % 2 == 0:
down[temp] += 1
else:
up[H-temp+1] += 1
for j in range(H-1, 0, -1):
down[j] += down[j+1]
for k in range(2, H+1):
up[k] += up[k-1]
for s in range(1, H+1):
count[s] = down[s] + up[s]
min_count = min(count[1:])
print(min_count, count[1:].count(min_count))
느낀점
for문을 너무 많이 쓴거 같다. 다른 사람들 풀이를 보면 이분탐색을 이용하던데 한번 코드리뷰를 해보아야겠다.
반응형
'알고리즘 문제 > 백준' 카테고리의 다른 글
(백준 알고리즘 문제풀이)10989번 수 정렬하기 3 (0) | 2022.07.19 |
---|---|
(백준 알고리즘 문제풀이)2015번 수들의 합 4 (0) | 2022.07.17 |
(백준 알고리즘 문제풀이) 10211번 Maximum Subarray (0) | 2022.07.15 |
(백준 알고리즘 문제풀이) 2559번 수열 (0) | 2022.07.15 |
(백준 알고리즘 문제풀이)19638번 센티와 마법의 뿅망치 (0) | 2022.07.15 |
Comments