일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 두원사이의정수쌍
- 프로그래머스
- 우박수열정적분
- pccp기출문제
- 타겟넘버
- DP
- [pccp 기출문제]
- 백준알고리즘
- solved.ac골드
- 지도 여러개
- solved.ac플래티넘
- 최소스패닝트리
- 정렬
- JS
- 스택
- Lv3
- 5강클로저
- 알고리즘문제풀이
- React.StrictMode
- 과제진행하기
- 이중지도
- 2023카카오블라인드코테
- c++
- JS스터디
- Lv2
- 알고리즘 문제풀이
- 백준 알고리즘
- 비트마스크
- 코어자바스크립트
- div2개
- Today
- Total
목록알고리즘 (101)
호지
처음엔 BFS로 접근했다가 시간초과를 당했다...! 이 문제를 풀 때 중요한 것은 사전순으로 빠른 경로를 출력한다는 것이다. 따라서 d > l > r > u 순으로 움직일 수 있는 만큼 먼저 움직여야 한다. 우선 미로에는 별다른 장애물이 없기 때문에 시작점과 끝점의 거리는 abs( x - r ) + abs( y - c)로 구할 수 있다. 이 거리가 두점사이의 최단경로의 거리이므로, 만약 이 값이 k보다 크다면 k만큼 이동해도 끝점에 도달하지 못하므로 impossible이다. 또한 k에서 최단 경로의 거리를 뺐을 때 이 값이 홀수라면, 끝점에 도달하지 못하므로 impossible이다. (예를 들어, 최단경로만큼 이동해서 끝점에 도달하고 왔다갔다 하면서 횟수만 채운다고 생각했을 때, 왔다갔다하는 횟수는 짝수..
문제를 읽고 풀이과정에 대해 고민했습니다. 1단계 근무태도 점수(a)와 동료 평가 점수(b)를 보고 인센티브를 받지 못하는 경우를 거른다. 2단계 근무태도 점수(a)와 동료 평가 점수(b)의 합을 보고 등수를 나눈다. 1단계와 2단계의 과정을 거치면 원하는 답을 구할 수 있을 것이라 생각했고, 정렬된 데이터가 필요할 것이라고 생각했습니다. 1단계에서는 a기준으로 정렬하고, b기준으로 정렬을 2번하는 방법을 생각했으나, 2번의 정렬과정을 불필요해보였습니다. 그래서 a기준으로 내림차순 정렬을 하고 a값이 동일할 때는 b기준으로 오름차순 정렬을 했습니다. 정렬된 리스트에서 처음 값을 기준으로 삼고, 다음 원소가 a값과 b값 모두 작은 경우라면 해당 원소를 [-1, -1]로 초기화 했습니다. (인센티브를 받지 ..