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
- 조합
- 시뮬레이션
- SWEA
- EditorInfo
- 약수 구하기
- 프로그래머스
- EditText
- Kotlin
- imeOptions
- 2501
- 백준 퇴사
- hilt
- val
- 오르막수
- 완전탐색
- 지능형 기차2
- 순수함수
- Parcelize
- 순열
- Parcelable
- 백준 14501
- java
- BuildConfig
- 최단경로
- 백준
- 스카이라인 쉬운거
- Android
- BFS
- dfs
- 자바
Archives
- Today
- Total
안드 공부를 해볼까?
[Java] 백준 달력 본문
728x90
1. 문제 분석
문제만 봐서는 무슨말을 하는지 모르겠다. 밑의 그림을 보자.
각 날짜마다 일정이 있고 곂치는 일정이 있으면 밑으로 추가된다.
또, 일정이 없는날이면 포함되지 않아서 따로 계산도 해줘야한다.
여기서 구분해야하는건 2가지다.
1. 일정이 중첩
2. 일정이 없는날
1번은 중첩이 될 수록 직사각형의 높이가 될 것이다. 즉, 인덱스를 이용하면 편할 것이다.
2번은 일정이 없다면 직사각형이 종료되는 시점이다. 그 전까지의 값을 구해주면 된다.
2. 구현
import java.io.*;
import java.nio.Buffer;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;
int count = Integer.parseInt(br.readLine());
int[] arr = new int[367];
int max = 0;
int width = 0;
int height = 0;
int result = 0;
//input
for (int i = 0; i < count; i++) {
st = new StringTokenizer(br.readLine());
int start = Integer.parseInt(st.nextToken());
int end = Integer.parseInt(st.nextToken());
for (int j = start; j <= end; j++) {
arr[j]++;
}
max = Math.max(max, end);
}
//calc
for (int i = 1; i <= max+1; i++) {
if (arr[i] == 0) {
result += width * height;
width = 0;
height = 0;
} else {
height = Math.max(height, arr[i]);
width++;
}
}
System.out.println(result);
}
}
arr에 일정들을 관리해줬다. 일정이 있다면 1을 더해준다.
또한, max를 설정해서 for문을 적게 돌리게 했다.
calc부분에서 arr의 값이 0이면 직사각형을 계산하는 것이다.
세로는 그 중 가장 큰 값이고 가로는 0이 나오기전까지 1씩 더해준다.
3. 마무리
구현문제가 내 적성에 맞는건지 문제 풀면서 답지 안본게 오랜만이다.
이렇게 매일 문제를 풀어야하는데..
반응형
'알고리즘 > 백준' 카테고리의 다른 글
[Java] 백준 귀여운 라이언 (0) | 2022.08.16 |
---|---|
[Java] 백준 배열 돌리기 (0) | 2022.08.16 |
[Java] 백준 수들의 합 2 (0) | 2022.08.16 |
[Java] 백준 퇴사 2 (0) | 2022.08.09 |
[Java] 백준 동전 2 (0) | 2022.08.06 |
Comments