🔺 문제
21921번: 블로그
첫째 줄에 $X$일 동안 가장 많이 들어온 방문자 수를 출력한다. 만약 최대 방문자 수가 0명이라면 SAD를 출력한다. 만약 최대 방문자 수가 0명이 아닌 경우 둘째 줄에 기간이 몇 개 있는지 출력한다
www.acmicpc.net
🔺 코드
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
|
import java.util.*;
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
int N = Integer.parseInt(st.nextToken());
int X = Integer.parseInt(st.nextToken());
int[] A = new int[N + 1];
int[] sum = new int[N + 1]; // 누적합
st = new StringTokenizer(br.readLine(), " ");
for(int i = 1 ; i <= N ; i++) {
A[i] = Integer.parseInt(st.nextToken());
sum[i] = sum[i - 1] + A[i];
}
// 🔔 슬라이딩 윈도우 🔔
int max = Integer.MIN_VALUE;
int cnt = 0;
for(int i = X ; i <= N ; i++) {
int tmp = sum[i] - sum[i - X]; // 📍 (i-X) ~ i까지의 구간 합 📍
if(tmp > max) {
max = tmp; cnt = 1; // 카운팅 값 갱신
}
else if(tmp == max) {
cnt++;
}
}
// 출력
if(max == 0) {
System.out.println("SAD");
return;
}
else {
System.out.println(max);
System.out.println(cnt);
}
}
}
|
cs |
✅ 해결 아이디어
✔ 누적 합 + 슬라이딩 윈도우
🔺 다른 풀이들
- 깔끔한 설명~~ (복습용)
[BJ21921] 블로그
백준 - 블로그 문제 링크 https://www.acmicpc.net/problem/21921 21921번: 블로그 첫째 줄에 $X$일 동안 가장 많이 들어온 방문자 수를 출력한다. 만약 최대 방문자 수가 0명이라면 SAD를 출력한다. 만약 최대
yeomss.tistory.com
- 투 포인터를 활용한 풀이
[알고리즘] 백준 21921 - 블로그
https://www.acmicpc.net/problem/21921찬솔이는 블로그를 시작한 지 벌써 $N$일이 지났다.요즘 바빠서 관리를 못 했다가 방문 기록을 봤더니 벌써 누적 방문 수가 6만을 넘었다.찬솔이는 $X$일 동안 가장 많
velog.io
💬 느낀 점
회피해왔던 슬라이딩 윈도우..
이제는 더 이상 물러날 곳이 없다-!
1회독 | 2회독 | 3회독 | 4회독 | 5회독 |
V |
(참고)
✔ ChatGPT...
✔ 슬라이딩 윈도우 개념
[Java]투 포인터 / 슬라이딩 윈도우 알고리즘
비슷하면서도 다른 두 알고리즘을 설명하겠습니다. 공부를 목적으로 진행하는 포스팅으로 만약 틀린 부분이 있거나 미흡한 점이 있다면 피드백 부탁드리겠습니다. 투 포인터와 슬리이딩 윈도
bbangson.tistory.com
[Java] 슬라이딩 윈도우(Sliding Window) 알고리즘
슬라이딩 윈도우 알고리즘은 배열 요소의 일정 범위 값을 비교할때 사용하면 유용한 알고리즘 입니다. 동작방식 일정 정수로 이루어진 배열 int[] arr= {3,1,5,3,4,1,5,7,5,1,8} 가 있다면, 길이가 5인 배
tylee82.tistory.com
'코테 > 백준' 카테고리의 다른 글
[백준/JAVA] 4659번: 비밀번호 발음하기 (0) | 2023.07.29 |
---|---|
[백준/JAVA] 10025번: 게으른 백곰 (0) | 2023.07.26 |
[백준/JAVA] 3273번: 두 수의 합 (0) | 2023.07.24 |
[백준/JAVA] 1032번: 명령 프롬프트 (0) | 2023.07.24 |
[백준/JAVA] 2338번: 긴자리 계산 (0) | 2023.07.23 |