강의

멘토링

로드맵

인프런 커뮤니티 질문&답변

백인호님의 프로필 이미지
백인호

작성한 질문수

38군데 합격 비법, 2025 코딩테스트 필수 알고리즘

5-2. LINE 인턴 채용 코딩테스트

JAVA 질문입니다. 5-2.LINE 인턴 채용 코딩 테스트 에서 List에 Map<Integer, boolean>을 사용한 이유가 궁금합니다.

작성

·

7

0

일단 자바질문이라 죄송합니다. ㅎㅎㅎ

 

1. 현재 학습 진도

  • 몇 챕터/몇 강을 수강 중이신가요? 5-2.LINE 인턴 채용 코딩 테스트 입니다.

  • 어떤 알고리즘을 학습하고 계신가요? BFS 내용입니다.

  • 여기까지 이해하신 내용은 무엇인가요?
    time단위로 체크하기위해 visited list와 for문을 사용하는것을 이해했습니다.

 

2. 어려움을 겪는 부분

  • 어느 부분에서 막히셨나요? visited에서 Map에 true를 받는 이유가 궁금합니다.

  • 코드의 어떤 로직이 이해가 안 되시나요? visited에서 Map에 true를 받는 이유가 궁금합니다.

  • 어떤 개념이 헷갈리시나요?
    List<List<Integer>>를 사용 할 수 있을꺼 같은데 map을 사용한 이유가 궁금합니다.

 

3. 시도해보신 내용

  • 문제 해결을 위해 어떤 시도를 해보셨나요? 강의를 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; }

 

이렇게 구체적으로 알려주시면, 더 정확하고 도움이 되는 답변을 드릴 수 있습니다! 😊

답변

답변을 기다리고 있는 질문이에요
첫번째 답변을 남겨보세요!
백인호님의 프로필 이미지
백인호

작성한 질문수

질문하기