Skip to content

Week7 강혜성1103 게임 풀이#133

Open
Fortuna3Co wants to merge 8 commits intoManduTheCat:mainfrom
Fortuna3Co:khs-BJ_game1103
Open

Week7 강혜성1103 게임 풀이#133
Fortuna3Co wants to merge 8 commits intoManduTheCat:mainfrom
Fortuna3Co:khs-BJ_game1103

Conversation

@Fortuna3Co
Copy link
Copy Markdown
Collaborator

@Fortuna3Co Fortuna3Co commented Sep 30, 2022

game1103 KHS 클릭하시면 코드 볼 수 있습니다.

풀이

  • 잃는 생명의 최소값을 구하는 프로그램을 작성하시오. -> 최소비용 문제
  • 따라서 이용할 수 있는 알고리즘은 bfs / dijkstra 알고리즘이라 생각했습니다.
  • 시간 상 dijkstra 알고리즘 구현하기는 힘들다고 생각해 bfs 알고리즘으로 구현했습니다.
  • 단순하게 bfs로 구현할 경우 갈 수 있는 노드를 dx, dy 순서에 따라 방문하게 되는데 이럴 경우 최소 비용이 되지 않습니다.
    (한번 방문한 경우 다지 재 방문하지 않기 때문에)
  • 이러한 상황을 방지하기 위해서 최소부터 탐색을 해야 합니다. 따라서 queue 대신 priority queue를 사용하면 됩니다.

ex) queue 사용
0 1 1
0 1 1
1 1 1
위와 같은 형태가 주어졌을 때, 첫 번째 방문에서는 오른쪽과 아래쪽을 탐색하게 됩니다.
이 때 잃는 생명력은 오른쪽일 경우 1(1, 0), 아래쪽일 경우 0(0, 1) 입니다. (x, y)

두 번째 방문을 처리하는 경우에 오른쪽부터 처리하게 될 경우 사방인 오른쪽(2, 0), 아래쪽(1, 1)을 탐색하게 되고
각 각에서 잃는 생명력은 2가 됩니다.

하지만 아래쪽 부터 처리하게 될 경우에는 오른쪽 (1, 1), 아래쪽 (0, 2)를 탐색하게 되고
각 각에서 잃는 생명력은 1이 됩니다.

이와 같은 경우를 방지하기 위해서 잃은 생명력이 최소인 지점에서부터 탐색을 합니다. -> priority queue 사용

리뷰 요청 사항

  • 더 많은 리뷰를 위해 자세히 적어주세요

느낀점

  • 단순하게 bfs라고 생각했다가 많이 틀렸습니다. 시간이 없더라도 문제를 꼼꼼하게 보고 생각을 정리해서 풀어야 하는것을 다시 한번 느꼈습니다.

@Fortuna3Co Fortuna3Co changed the title Khs bj game1103 Week7 강혜성1103 게임 풀이 Sep 30, 2022
@tabss2003
Copy link
Copy Markdown
Collaborator

설명을 쉽게 잘 적어주셔서 왜 bfs로도 풀리는지 이해가 쉽게 되었습니다

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants