inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

정말 쉽게 풀어보는 코딩 테스트 top 기본 문제 (with 자바)

Level Order Of BinaryTree

문제에서 queue와 list의 초기화가 궁금합니다.

306

hhm

작성한 질문수 6

2

Queue<TreeNode> queue = new LinkedList<>();
List<Integer> list = new LinkedList<>();

이와 같이 둘 모두 LinkedList로 초기화한 이유가 궁금해서 여쭤봅니다 ㅠ
그냥 PriorityQueue 혹은 ArrayList와 같은 것들로는
이 문제의 로직이 설명이 안되는 것인지 궁금합니다 ㅠ
어떻게 LinkedList로 바로 생각이 들까요?

java 코테 준비 같이 해요!

답변 1

2

푸샵맨 코딩스터디

안녕하세요.

좋은 질문입니다.

먼저 질문 주신 내용중에

1.

Queue<TreeNode> queue = new LinkedList<>();

이와 같이 LinkedList로 초기화한 이유가 궁금해서 여쭤봅니다 

=> 저는 여기서 offer()메소드 써서 TreeNode객체를 넣을려고 합니다.

그리고 이걸 다시 뽑아내기 위해서 poll()를 이용할려고

Queue<TreeNode> queue = new LinkedList<>(); 이걸 이용한거죠

LinkedList 메소드는 말그대로 연결된리스트라 그거에 맞는 대표 메소드가 있어서 주로 offer(), poll()을 이용할려고 사용했습니다

만약

Queue<TreeNode> queue = new ArrayList<>(); 이렇게 하면 컴파일 에러가 납니다.

Queue<TreeNode> queue = new PriorityQueue(); 이렇게 하면 우선순위큐에 해당하는 방식으로 소팅을 해서

뽑아내니까  여기서는 쓰면 안되겠죠. max/minHeap 값들중에 최대/최소값을 Tree형태로 제일 높은곳에서 뽑아내서 리턴해주므로 방식이 완전히 다른 메소드들입니다.

2. 

List<Integer> list = new LinkedList<>();

이와 같이 LinkedList로 초기화한 이유가 궁금해서 여쭤봅니다 

=> 두번째는 List<Integer> list = new ArrayList<>(); 이렇게 해도 됩니다.

list. add()메소드를 써서 단순히 담기만 할것이기에

List<Integer> list = new LinkedList<>();

List<Integer> list = new ArrayList<>(); 

둘중에 아무거나 만들어서 add()메소드를 쓰면됩니다.

저는 강의할때는 List<Integer> list = new LinkedList<>(); 썼지만, 

git에는 List<Integer> list = new ArrayList<>();

이걸 썼네요.

3. 결론

내가 어떤 메소드를 쓸것인가?

이게 핵심인데요. 문제를 보면 대부분 정해져 있습니다.

키와 밸류형태로 담아보자 => Map<key, Value> map = new HashMap<>() 

대표 메소드 ,contain(), put(), get()..

키와 밸류형태인데 중복 제거해보자 => Set<key, Value> map = new HashMap() 

대표메소드 contain(), add()..

객체를 담아서 우선순위로 소팅해보자 => Queue<TreeNode> queue = new PriorityQueue();

next개념의 객체들을 순서대로 꺼내보자  Queue<TreeNode> queue = new LinkedList<>(); 

offer(), poll(),peek();

객체를 그냥 담아보자 List<XXX> list = new ArrayList<>();

add()

뭐 이런식이죠, 문제 풀이를 잘 보시면 쓰는것만 나옵니다. 그것만 먼저 이해하시면 될거 같네요                                               

강의자료에 나오는 m과 n의 범위가 코딩하고 다른거 같습니다

0

254

0

나선형매트릭스 깃허브에 코드가 없는것같아요

0

209

0

로그 파일의 데이터 재정렬 코드가 깃허브에 없어요!

0

224

0

새로 생긴 기초강의 질문드려요

1

375

1

질문드립니다

1

219

1

Unique Paths Integer 질문입니다

0

219

1

subString 방법으로 문제 풀이 영상은 짤린건가요?

1

251

1

DFS 방식으로 푼 것이 맞나요?

0

308

2

질문드립니다~

0

196

1

left if문에 대해서

1

256

1

오타 인가요?

1

237

1

안녕하세요 강사님

1

189

1

질문 드립니다

0

172

2

Queue&Stack 문제해설집 문의

0

183

1

문제분석 로직 질문

1

230

1

시간 복잡도 문의드립니다.

1

232

1

시간복잡도 질문드립니다.

1

202

1

for-each 문 질문있습니다!

0

294

1

강의영상에서 사용된 로그 메소드가 궁금합니다.

2

281

2

강의자료 + 문제 이해 관련 질문입니다

1

278

3

강사님 오류맞나요?

1

207

1

강사님 시간 복잡도에 대해서 질문드립니다.

1

173

1

질문입니다.

1

201

1

문제에 대한 이해

1

313

1