melon940925   3년 전

1%에서 틀리지만 예외가 생각나지 않네요.. 반례 부탁드려요!

도착점이 같은 승객들이 있는 경우 확인했습니다.

벽때문에 승객을 태우지 못하는 경우 확인했습니다.

도착점이 다른 승객의 출발점이랑 같은 경우 확인했습니다.(처음 출발지점에 승객이 있는 경우도 확인)

풀이방법

1. 맵에는 각 손님의 번호를 2번부터 M+1번까지 표기하였습니다.

2. 각 손님의 목적지를 나타내는 destination배열을 만들었습니다.

- destination[손님번호].y = 도착 지점의 y좌표,

- destination[손님번호].x = 도착 지점의 x좌표

3. 손님을 태우러가는 BFS를 만들었습니다.

- 손님을 태우는 BFS는 1보다 큰 번호를 만났을 때 손님을 자료구조에 담습니다.

- 손님을 만나면 BFS가 끝나고 자료구조에 담긴 손님들 중에 조건에 맞는 손님을 태웁니다.

- 손님을 태우러 가는동안 이동한 거리를 반환합니다.

- 만약 queue가 비어있을 때까지 BFS가 끝나지 않았다면 98765432를 반환합니다. 

4. 손님을 도착지점까지 데려다주는 BFS를 만듭니다.

- 도착지점의 y와 x를 인자로 받고 그 지점에 도달하면 BFS가 끝나며 이동거리를 반환하는 BFS입니다.

- 만약 queue가 비어있을 때까지 BFS가 끝나지 않았다면 98765432를 반환합니다.

5. 손님을 태우러 갈때는 BFS에서 반환한 값을 연료에서 빼고 그 값이 0보다 크다면 -1을 출력 후 return 합니다.

6. 손님을 태우고 이동할 때는 BFS에서 반환한 값과 연료를 비교하여 연료가 크거나 같다면 연료+=반환값; 그렇지않다면 -1을 출력 후 return합니다.

이런식으로 만들었고, 테스트케이스도 여러가지 만들어서 동작해보았지만 오류가 없는 것 같은데, 1%에서 틀렸다고 나오네요

고수분들 도움좀 부탁드려요~

zxcv5052   3년 전

최단거리가 가장 짧은 승객을 고른다. 그런 승객이 여러 명이면 그중 행 번호가 가장 작은 승객을, 그런 승객도 여러 명이면 그중 열 번호가 가장 작은 승객을 고른다.

이 부분 조건 적용하신건가요?

melon940925   3년 전

네! 우선순위큐를 사용하였습니다

whgusdn321   1년 전

지금은 맞으셨네요

melon940925   1년 전

아 네.. 어쩌다보니 맞았는데 왜 맞게 됐는지 기억은 잘 안나네요.

해결 됨으로 바꿨습니다.

댓글을 작성하려면 로그인해야 합니다.