미로탈출 159993번

Programmers - 미로탈출 159993번

https://school.programmers.co.kr/learn/courses/30/lessons/159993

 

기본적인 길찾기 문제라고 생각했다.

  1. 시작지점 -> 레버
  2. 레버 -> 출구

이렇게 두번의 탐색을 실행하고, 둘중에 하나라도 못찾을 시 -1 return

Queue 를 활용한 bfs를 이용하여 문제를 풀이했다

 

마지막에 -2를 하고 return 하는 이유는 check 배열에서 이미 지나간 곳인지 체크할 때 0 인지 아닌지로 체크를 하는데, 처음 시작장소를 다시오면 안되므로 출발하는 장소의 check에 1를 넣고 시작했기 때문..

2차원 check배열은 출발지점으로부터 얼만큼 이동했는지 확인할 수 있는 저장장소이며, 이미 지나간 곳인지 확인할 수 있는 역할도 함.

 

 

image

Programmers - 무인도 여행 154540번

Programmers - 무인도 여행 154540번

https://school.programmers.co.kr/learn/courses/30/lessons/154540

 

제한사항 이 부담이 없으므로 전체탐색을 통해 한번 쫘악 훑어 주면 될거 같다.

Queue를 활용한 bfs(너비우선탐색) 을 이용하여 문제를 풀었다.

이때 point가 약간 혼란스러울 수 있는데, 내가 생각한 y좌표는 height 높이라고 생각했고,

x좌표는 width 너비를 생각하여 문제를 풀이했는데 point 에서 제공하는 y와 x는 그 반대여서

Queue에 add할때 반대로 넣은걸 볼 수 있는데, 다음엔 다른걸 사용하여 이런 귀찮은 일을 없애야 겠다.

그리고 보면 문제에 비해 소스가 이상하게 좀 긴 느낌인데 쓸때 없는 부분을 정리해서 다시 짜 봐야겠음

 

 

 

programmers_154540

Programmers - 호텔대실 155651번

Programmers - 호텔 대실 155651번

https://school.programmers.co.kr/learn/courses/30/lessons/155651

 

이 문제는 데이터 사이즈가 작아서 시간복잡도를 생각 안해도 될거 같았다.

그래서 처음엔 재귀를 사용해서 풀었는데, 누적합을 사용해서 푸는 방법이 있어서

해당 방법을 이용해 보았다.

시간은 계산하기 편하게, 시간 을 분 으로 통합하여 계산 했다.

 

Algorithm-5


Code

 

+ Recent posts