⬇️ 문제 링크입니다.
https://school.programmers.co.kr/learn/courses/30/lessons/1839
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제 조건
- m : time_map 의 행
- n : time_map 의 열
- s : 튜브가 대화 할 수 있는 시간
범위는 1 <= s <= 2^31-1 - time_map 파티장을 표현한 2차원 int 배열
배열의 원소값 범위는 -1 <= s <= 2^31-1 - (0,0)에서 출발하여 (m-1, n-1)까지 도달하는데 있어 가장 짧은 경로, 경로가 같다면 S의 값이 적은 값을 찾아보자
문제 풀이
- 이동거리, 걸린 시간, 좌표x, 좌표y 값을 담을 수 있는 class 설정
- 파티장까지 이동하는 짧은 경로를 계속 체크할 2차원 int 배열 생성
- (0,0)을 시작으로 time_map 범위에 포함되는 주변을 탐색
- 만약 time_map[dirY][dirX]가 -1 (=테이블) 이면 패스
- 만약 경로체크용 2차원배열에 기록된 경로값보다 현재 값이 더 긴 경로를 가졌다면 패스
- 두 조건에 만족한다면 경로체크 2차원 배열에 현재 값을 기록
- 현재까지 걸린 시간과 현재 자리에서 걸릴 시간을 더한 값이 인내심 값 S 보다 작으면, 다음으로 이동할 수 있게 pq에 새로운 값을 저장
** 배열의 원소 값 범위가 INTEGER 범위에 근접하니 이 부분 계산 시 long 처리 해주기**
'Algorithms > Programmers' 카테고리의 다른 글
[Programmers] 연속 부분 수열 합의 개수 (0) | 2023.10.26 |
---|---|
[Programmers] 주차 요금 계산 (0) | 2023.10.26 |
[Programmers] 무지의 먹방 라이브 (0) | 2023.10.23 |
[Programmers] 호텔 방 배정 (0) | 2023.10.23 |
[Programmers] 바탕화면 정리 (0) | 2023.03.07 |