안녕하세요. delay100 입니다.
오늘은 99club 모의고사를 신청해서 18시부터 22시까지 java- 2팀으로 참가했습니다.
문제에서 총 3문제가 나왔고, 2번 문제만 해결하였습니다..ㅠㅠ
해당 코드는 팀코드로 채택되어 기뻤습니다..!

1번 문제. 스티커
https://www.acmicpc.net/problem/9465
9465번: 스티커
첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스의 첫째 줄에는 n (1 ≤ n ≤ 100,000)이 주어진다. 다음 두 줄에는 n개의 정수가 주어지며, 각 정수는 그 위치에 해당하는 스티커의
www.acmicpc.net
해결 못했습니다..
// 1번 피드백
dp의 핵심 -> 반복이 있느냐?
어느정도 작은 유형이 반복되는 경우(dp 확률이 up)
반복된 내용 -> 점화식 생성(계속 계산x)
dp 기본문제
1. https://www.acmicpc.net/problem/1003
2. https://www.acmicpc.net/problem/2839
쪼개서 최소 1~3까지 규칙o -> dp, 규칙x -> 그리디
2번 문제. 스카이라인 쉬운거
https://www.acmicpc.net/problem/1863
1863번: 스카이라인 쉬운거
첫째 줄에 n이 주어진다. (1 ≤ n ≤ 50,000) 다음 n개의 줄에는 왼쪽부터 스카이라인을 보아 갈 때 스카이라인의 고도가 바뀌는 지점의 좌표 x와 y가 주어진다. (1 ≤ x ≤ 1,000,000. 0 ≤ y ≤ 500,000) 첫
www.acmicpc.net
import java.io.*;
import java.util.*;
// 2번
public class Main {
public static void main(String args[]) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int N = Integer.parseInt(br.readLine());
Stack<Integer> stk = new Stack<Integer>();
int cnt = 0;
for(int i=0; i<N; i++) {
StringTokenizer st = new StringTokenizer(br.readLine());
int x = Integer.parseInt(st.nextToken()); // 실질적 사용X
int y = Integer.parseInt(st.nextToken());
// 스택이 비어있지 않고, 스택에서 꺼낸 값(스택의 상단 값)이 현재 값보다 큰 경우
// 즉, 현재 위치보다 앞에 건물이 존재하고, 앞 건물이 현재 건물보다 더 큰 경우
while(!stk.isEmpty() && (stk.peek() > y)) {
stk.pop(); // 스택에서 제거(앞의 큰 건물 제거)
cnt++; // 정답 값(건물 수) +1
}
// (a)스택이 비어있고, (b)스택의 상단 값이 현재 값보다 작은 경우
// 즉, (a)위에서 정산된 건물을 제외했을 때, 현재 위치보다 앞에 건물이 없고 땅이 아니라 건물인 경우
// 또는 (b)앞 건물이 현재 건물보다 더 작은 경우
if((stk.isEmpty() && y > 0) || (!stk.isEmpty() && (stk.peek() < y))) {
stk.push(y); // 스택에 건물 추가
}
}
// 스택에 값이 남아있는 경우(세지 않은 건물이 남아있는 경우)
// 예를 들어, 건물의 y좌표가 1, 2, 3으로 주어진 경우 위에서는 push만 됨
while(!stk.isEmpty()) {
stk.pop(); // 건물을 제거하면서
cnt++; // 정답 값(건물 수) +1
}
bw.write(Integer.toString(cnt));
br.close();
bw.close();
}
}
3번 문제. 중량제한
https://www.acmicpc.net/problem/1939
1939번: 중량제한
첫째 줄에 N, M(1 ≤ M ≤ 100,000)이 주어진다. 다음 M개의 줄에는 다리에 대한 정보를 나타내는 세 정수 A, B(1 ≤ A, B ≤ N), C(1 ≤ C ≤ 1,000,000,000)가 주어진다. 이는 A번 섬과 B번 섬 사이에 중량제한이
www.acmicpc.net
이분탐색 + BFS/DFS으로 풀이
감사합니다. 피드백 환영합니다.
풀지 못한 문제는 이번주 중으로 풀어볼 예정입니다..!
'항해99 > 99club1기TIL' 카테고리의 다른 글
[99club/TIL] 5주차 - 일요일 TIL(Today I Learned) (0) | 2024.04.29 |
---|---|
[99club/TIL] 5주차 - 토요일 TIL(Today I Learned) (0) | 2024.04.27 |
[99club/TIL] 5주차 - 화요일 TIL(Today I Learned) (1) | 2024.04.23 |
[99club/TIL] 5주차 - 월요일 TIL(Today I Learned) (1) | 2024.04.22 |
[99club/TIL] 4주차 - 일요일 TIL(Today I Learned) (1) | 2024.04.22 |