작성
·
7
0
몇 챕터/몇 강을 수강 중이신가요? 5-2.LINE 인턴 채용 코딩 테스트 입니다.
어떤 알고리즘을 학습하고 계신가요? BFS 내용입니다.
여기까지 이해하신 내용은 무엇인가요?
time단위로 체크하기위해 visited list와 for문을 사용하는것을 이해했습니다.
어느 부분에서 막히셨나요? visited에서 Map에 true를 받는 이유가 궁금합니다.
코드의 어떤 로직이 이해가 안 되시나요? visited에서 Map에 true를 받는 이유가 궁금합니다.
어떤 개념이 헷갈리시나요?
List<List<Integer>>를 사용 할 수 있을꺼 같은데 map을 사용한 이유가 궁금합니다.
문제 해결을 위해 어떤 시도를 해보셨나요? 강의를 10번정도 다시본거같습니다.
에러가 발생했다면 어떤 에러인가요? 초반에 while문 탈출조건을 잘못설정하여 무한루프가 돌았습니다.
현재 작성하신 코드를 공유해주세요
public static int solution(int c, int b) {
int time = 0;
Queue<int[]> q = new LinkedList<>();
q.add(new int[]{b, 0});
List<List<Integer>> visited = new ArrayList<>(200001); // [{},{} .... 20만개]
for (int i = 0; i < 200001; i++) {
visited.add(new ArrayList<>());
}
while (c <= 200000) {
c += time;
if (visited.get(c).contains(time)) {
return time;
}
time++;
int qSize = q.size();
for (int i = 0; i < qSize; i++) {
int[] cos = q.poll();
int nextB = cos[0];
if (nextB - 1 >= 0) {
visited.get(nextB - 1).add(time);
q.add(new int []{nextB - 1, time});
}
if (nextB + 1 <= 200000) {
visited.get(nextB + 1).add(time);
q.add(new int[]{nextB + 1, time});
}
if (nextB 2 <= 200000) {
visited.get(nextB 2).add(time);
q.add(new int[]{nextB * 2, time});
}
}
}
return 0;
}
이렇게 구체적으로 알려주시면, 더 정확하고 도움이 되는 답변을 드릴 수 있습니다! 😊
답변