안녕하세요. 강의를 듣던 중 동기화랑 Queue 가 밀접한 관련이 있다라는 말씀과 그 예시가 잘 이해가지 않아 질문을 남깁니다. 은행 예시에서 손님(=처리해야 할 일)을 순서대로 Queue 에 넣고 은행원들(=처리주체, Thread) 이 하나씩 그 일을 처리해 나가는 부분까지는 이해를 했습니다. 앞선 강의 중 동기화 부분에서 "공유되는 자원을 여러 Thread 가 동시에 접근할 때 그 교통정리를 하는 작업"이 "동기화" 라고 이해했습니다. 은행 예시에서는 Queue 를 이용해 스케쥴링을 한 건 맞지만 동기화와는 다소 거리가 멀어보이는데 어떤 포인트에서 해당 사례가 동기화와 연관이 있는지 설명해주시면 감사드리겠습니다.
강사님, 안녕하세요. 토마토문제 testcase 4, 5에서 시간초과 오류가 발생하고 있습니다. 정답코드를 넣어봐도 같은 문제가 발생합니다. 다른 학생분들이 올린 질문에 답변하신 것을 찾아보니, 정답코드를 넣어도 시간초과가 발생하는 것은 컴퓨터 성능문제라고 하셨습니다. 그런데 다른 문제에서는 안그러는데 자꾸 queue를 사용하는 경우에만 이런 성능문제로 인한 시간초과가 발생하는데 이유가 뭔가요? queue가 다른 자료구조보다 사용하는데 시간이 많이 걸리나요? 감사합니다.
안녕하세요. 강사님. Level Order Of BinaryTree 강좌 내용중 궁금한 내용이 있어서요. 맨 처음 아래 코드를 통해 Queue 에 TreeNode 객체를 추가하면 Queue < TreeNode > queue = new LinkedList <>(); queue . offer ( root ); 강좌에 있는 아래의 모양으로 셋팅되는 부분은 이해가 되는데요. 아래 코드의 중간 부분 for 영역에서 가로로 돌아가는지 이해가 되질 않습니다. while (! queue . isEmpty ()) { int size = queue . size (); List < Integer > list = new LinkedList <>(); for ( int i = 0 ; i < size ; i ++) { TreeNode node = queue . poll (); list . add ( node . val ); if ( node . left != null ) { queue . offer ( node . left ); } if ( node . right != null ) { queue . offer ( node . right ); } } result . add ( list ); } Q1. 어떻게 가로로 순차로 돌아가는 것인지.. 왜 queue.size = 3 이 나오는지도요. i=0, 3 i=1, 4 -> 5 i=2, 6 -> 7 Q2. node.left 와 node.right 를 다시 queue.offer 해주고 있는데 이 부분이 어떻게 처리되는지.. 번거로우시겠지만 그림으로 설명을 부탁드려도 될까요?