728x90
알고리즘 스터디
오늘은 multi source BFS 에 대한 문제였다.
https://www.acmicpc.net/problem/7569
https://www.notion.so/1f167f8e8327816a830fffb829da3b2f
이 문제에서 실수했던 부분은 입력부분이었다..
static void input(BufferedReader br) throws Exception {
StringTokenizer st = new StringTokenizer(br.readLine());
COL = Integer.parseInt(st.nextToken());
ROW = Integer.parseInt(st.nextToken());
H = Integer.parseInt(st.nextToken());
map = new int[ROW][COL][H];
visited = new boolean[ROW][COL][H];
for (int z=0 ; z<H ; z++) {
for(int i = 0; i < ROW; i++){
st = new StringTokenizer(br.readLine());
for(int j = 0; j < COL; j++) {
map[i][j][z] = Integer.parseInt(st.nextToken());
// System.out.println("input: " +i + " " + j + " " + z + " " + map[i][j][z]);
}
}
}
}
해당 부분에서 입력값이 아래와 같이 주어지기 때문에
5 3 2
0 0 0 0 0 // 높이: 0, ROW: 0
0 0 0 0 0 // 높이: 0, ROW: 1
0 0 0 0 0 // 높이: 0, ROW: 2
0 0 0 0 0 // 높이: 1, ROW: 0
0 0 1 0 0 // 높이: 1, ROW: 1
0 0 0 0 0 // 높이: 1, ROW: 2
H까지를 먼저 돌았어야하는데 ROW까지 반복문과 위치를 반대로 적은 부분이었다..
디버깅을 해보고 입력값에 문제가 있다는 점을 알게되었다.
그리고 한문제 더
https://school.programmers.co.kr/learn/courses/30/lessons/87390
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
https://www.notion.so/H-Index-1f267f8e8327804a8068e593647e62df
import java.util.*;
class Solution {
public int[] solution(long n, long left, long right) {
ArrayList<Long> list = new ArrayList<>();
for(long i=left; i<=right ; i++){
list.add(Math.max(i/n+(long)1, i%n+(long)1));
}
return list.stream().mapToInt(x -> x.intValue()).toArray();
}
}
이건 간단하게 풀린 문제였다.
이전에 프로젝트 할 때 순번 관련해서 로직을 짰던 적이 있었는데 그때 고민했던 내용들이 도움이 되었던 것 같다.
1부터 시작하게 하고 싶을 때는 보통 %를 하거나 /를 하면 0부터 시작하게 되는데 이 결과에서 +1을 해주는 것이 간단하다는 것을 저때 깨달았었다.
해당 문제는 컬럼 인덱스와 로우 인덱스의 최댓값을 구하면 되는 수학적 문제였다.
728x90
'TIL' 카테고리의 다른 글
[TIL]2025.05.17(토) (1) | 2025.05.18 |
---|---|
[TIL] 2025.05.16 (금) (0) | 2025.05.17 |
[TIL] 2025.05.14(수) (0) | 2025.05.14 |
[TIL] 2025.05.13(화) (0) | 2025.05.13 |
[TIL] 2025.05.12 (0) | 2025.05.12 |