해결된 질문
작성
·
39
0
안녕하세요 선생님 열심히 문제 풀고 있습니다
다름이 아니라 저는 deque 사용해서
0일때는 앞에 삽입, 1일때는 뒤에 삽입해서 문제를 풀었습니다
혹시 선생님께서 특별히 큐를 2개 사용한 이유가 있으신가요??
그리고 저는 이 수업을 듣는 이유가 제가 모르는 뭔가를 얻어 갈려고 문제 풀고 수업 듣고 이런식으로 진행하는데 3-J 같이 굳이 이렇게 풀어야 하나 라는 의문도 종종듭니다.
물론 제가 많이 부족하고 몰라서 그렇겠지만 선생님의 강의를 전부 습득 하는게 좋을지 아니면 제가 선별적으로 어떤건 가져가고 이런건 그냥 흘려 보내고 이렇게 하는게 좋을지 고민입니다.
물론 제가 선생님 실력에 한참 미치지 못하기 때문에 선별 할 능력이 없는것도 맞지만 가끔 보면 더 비효율적인거 같은데 라는 생각이 들어서 이렇게 질문 남깁니다.
항상 좋은강의 좋은 피드백 감사합니다.
좋은하루 되세요
답변 4
0
안녕하세요 ㅎㅎ
visited[ny][nx] = true;
if (map[ny][nx] == 0) {
queue.offerFirst(new Node(nx, ny, cur.level));
} else {
queue.offerLast(new Node(nx, ny, cur.level + 1));
}
ArrayDeque에 + 1하면서 집어넣었고, visited는 boolean으로 하는 것을 볼 수 있는데요.
그렇게 하셔도 무방합니다.
혹시 선생님께서 특별히 큐를 2개 사용한 이유가 있으신가요??
->
먼저 앞의 코드는 queue에다가 상태정보인 level을 집어넣기 때문에 가능합니다.
BFS는 보통 visited를 방문거리 int 타입으로 놓고 queue에다가 좌표정보만 넣게 되는데요.
이 때 레벨을 구분하는 "0인지 1인지를 구분" 하는 분기 로직이 필요하게 되고 이를 구분짓는 cnt라는 변수, queue2개가 필요합니다. (0을 담는, 1을 담는 queue)
물론 제가 많이 부족하고 몰라서 그렇겠지만 선생님의 강의를 전부 습득 하는게 좋을지 아니면 제가 선별적으로 어떤건 가져가고 이런건 그냥 흘려 보내고 이렇게 하는게 좋을지 고민입니다.
-> 음 만약에 문제를 맞췄을 때 꼭 제 방식대로 푸실필요는 없습니다. 이런 방법으로 푸는구나~ 하고 넘어가셔도 됩니다. ㅎㅎ
생각이 들어서 이렇게 질문 남깁니다.
-> 언제든 질문주세요 ㅎㅎ
또 질문 있으시면 언제든지 질문 부탁드립니다.
좋은 수강평과 별점 5점은 제게 큰 힘이 됩니다. :)
감사합니다.
강사 큰돌 올림.
0
0
0
안녕하세요, 인프런 AI 인턴입니다. 오늘아침딸기님.
3-J 문제 풀이에 대해 다양한 접근 방식을 시도하셨다니 좋습니다. deque를 사용하여 문제를 푼 방법도 창의적인 접근으로, 각 상황에 맞는 자료구조를 다양한 방법으로 활용할 수 있는 것은 큰 장점입니다.
큐를 2개 사용하는 이유:
강의에서 큐를 2개 사용하는 방법은 특정 문제 해결에 있어 각 큐의 역할을 명확하게 구분하여 복잡성을 줄이고, 특정 상황에서는 효율적인 탐색이 가능하도록 하기 위함일 것입니다. 큐 2개를 사용하면 각 큐에 특정 작업이나 상태를 매핑하여 문제를 더 구조적으로 풀 수 있는 경우가 있습니다.
강의에서 배울 점: 강의를 전부 습득하는 것이 가장 좋지만, 시간이 제한적이라는 점에서 스스로 판단하며 진도를 나가는 것도 하나의 방법입니다. 모든 강의의 내용이 현재 필요하지 않아도, 나중에 만났을 때 더 필요해질 수 있는 개념들이 있을 수 있습니다. 따라서, 원리를 이해하고 응용할 수 있는 능력을 키우는 것이 중요합니다.
특히 문제 풀이는 다일치를 위한 것이 아니라 다양하게 접근하고 개발자의 판단력을 기르는 측면이 크기 때문에 자신만의 코드 스타일을 구축하고, 강의를 통해 다양한 접근 방식을 배우는 것이 중요합니다.
관련된 접근 방법에 대해 추가적인 이해를 돕고자 아래의 링크에서 강의와 비슷한 질문 사례를 제공하고 있습니다:
- “3-J 풀이 방법에 관한 질문입니다!”: 이 답변에서는 큐의 활용에 대한 상세한 논의와 함께, 문제 해석 및 자료구조 선택에 대한 전략을 알아보실 수 있습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
https://www.acmicpc.net/source/97343609