Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- python
- React
- 프로그래머스
- 고고학 최고의 발견
- redux state값 유지
- Dreamhack
- react-router-dom
- 티스토리챌린지
- 코딩테스트
- 훈수 가능
- expo
- 꿀팁 환영
- 오블완
- url 랜더링
- 부산 맛집 OPEN API
- web-view
- 사업계획서
- 블로그 뉴비
- Redux
- 새로고침
- php-1
- 공공데이터 포털
- 보안
- level3
- 창업 300
- 드림핵
- 개발
- API 활용 신청
- apk 빌드
Archives
- Today
- Total
1223v
[BOJ] Ruby 백준 게똥벌레(3020) 본문
https://www.acmicpc.net/problem/3020
누적합을 이용하여 푸는 문제이다.
특이하게 시작점과 끝점만을 표시한 후 하나의 누적합 for문으로 끝내는 방식이다.
코드는 매우 단순하다.
홀짝을 구분하여 위 아래로 표시를 진행해준다.
오름차순으로 가는 경우, 시작점에 1 | 끝점에 -1로 끝을 표기한다
내림차순의 경우 전체 높이 - 돌 길이 를 한다
결국 누적합으로 for문을 돌게 되면 시작점(돌 시작 위치)로 부터 꼭대기까지 값이 갱신되므로,
결국 한 배열 안에 몇개의 돌들이 겹치는지를 확인할 수 있다.
N, M = gets.split.map(&:to_i)
graph = Array.new(M,0)
N.times do |i|
B = gets.to_i
if i %2 == 0
graph[0] += 1
graph[B] -= 1
else
graph[M-B] += 1
end
end
(1...M).each do |i|
graph[i] += graph[i-1]
end
puts "#{graph.min} #{graph.count(graph.min)}"
회고,
이분탐색 문제라해서 이분탐색으로만 접근했는데 누적합으로 더 간단히 풀리는 문제일줄 몰랐다..
한 알고리즘만 보지 말고 다른 알고리즘을 계속 적용하는 능력을 길러야 겠담,..
728x90
'PS' 카테고리의 다른 글
[BOJ] Python 백준 소용돌이 예쁘게 출력하기(1022) (0) | 2025.02.05 |
---|---|
[BOJ] Python, Ruby 백준 N-Queen(9663) (0) | 2025.02.04 |
[BOJ] Python, Ruby 백준 빙산(2573) (0) | 2025.02.02 |
[Programmers] Python 프로그래머스 양과 늑대(92343) (0) | 2025.01.22 |
[BOJ] Python 백준 특정한 최단 경로(17270) (0) | 2025.01.20 |