집으로 이동 문제 코드
124
youngyou1324
11 asked
0
안녕하세요 강사님
강사님께서 제시해준 답변 코드에서 의문이 있어서 질문드립니다.
여기서
조건절
if(nx <= 10001 && ch[0][nx] == 0){
~
를 보면 nx<=10001이 nx<10001이 되어야 되지 않나요?
ch가 int[][] ch = new int[2][10001]; 이건데
index out of bound 에러 날 것 같습니다.
import java.util.*;
class Solution {
public int solution(int[] pool, int a, int b, int home){
int[][] ch = new int[2][10001];
for(int x : pool){
ch[0][x] = 1;
ch[1][x] = 1;
}
Queue<int[]> Q = new LinkedList<>();
ch[0][0] = 1;
ch[1][0] = 1;
Q.offer(new int[]{0, 0});
int L = 0;
while(!Q.isEmpty()){
int len = Q.size();
for(int i = 0; i < len; i++){
int[] cur = Q.poll();
if(cur[0] == home) return L;
int nx = cur[0] + a;
if(nx <= 10001 && ch[0][nx] == 0){
ch[0][nx] = 1;
Q.offer(new int[]{nx, 0});
}
nx = cur[0] - b;
if(nx >= 0 && ch[1][nx] == 0 && cur[1] == 0){
ch[1][nx] = 1;
Q.offer(new int[]{nx, 1});
}
}
L++;
}
return -1;
}
public static void main(String[] args){
Solution T = new Solution();
System.out.println(T.solution(new int[]{11, 7, 20}, 3, 2, 10));
System.out.println(T.solution(new int[]{1, 15, 11}, 3, 2, 5));
System.out.println(T.solution(new int[]{9, 15, 35, 30, 20}, 2, 1, 25));
System.out.println(T.solution(new int[]{5, 12, 7, 19, 23}, 3, 5, 18));
System.out.println(T.solution(new int[]{10, 15, 20}, 3, 2, 2));
}
}
java
코딩-테스트
Answer 1
비밀번호
0
65
1
과일 가져가기 이러한 경우에는 반례가 생기지 않나요?
0
161
2
cpu 스케줄링
0
105
2
외부 문제 질문
0
122
2
가장 많이 사용된 회의실
0
117
2
심사위원 문제 시간복잡도 질문
0
127
1
현관문 출입순서
0
96
1
미로의 최단거리 통로
0
74
1
채점 사이트 개설
0
161
2
송아지를 잡자
1
110
1
다익스트라 + 환승횟수
0
135
2
문제풀이 해설 질문입니다.
0
124
2
"이동 횟수" 문제가 변형된다면?
0
155
2
예제 3번의 정답이 이해가 되지 않아요 선생님 ㅜㅜ
0
248
1
"비밀번호" 문제 확인 부탁드립니다!
0
170
1
최대 길이 연속수열 질문
0
192
1
잃어버린 강아지 문제 count 관련 질문있습니다
0
202
1
바둑대회 질문입니당
0
221
1
5. "최대 길이 바이토닉 수열" 에서 설명해주신 방법과 제가 직접 구현한 방법이 달라, 확인 한번 부탁드립니다
0
310
1
알파코드 풀이질문입니다
0
217
1
7번 비밀 번호 문제에 시간복잡도가 궁금합니다!
0
163
1
혹시 이렇게 작성해도 괜찮나요?
0
285
2
문제풀이 확인 부탁드립니다.
0
244
1
혼자서 푼 문제 확인 부탁드립니다.
0
298
1

