일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- DP
- Lv3
- 타겟넘버
- solved.ac골드
- 우박수열정적분
- 알고리즘문제풀이
- 두원사이의정수쌍
- 5강클로저
- 프로그래머스
- [pccp 기출문제]
- 과제진행하기
- Lv2
- pccp기출문제
- 정렬
- 스택
- 백준알고리즘
- React.StrictMode
- 알고리즘 문제풀이
- JS
- 지도 여러개
- 2023카카오블라인드코테
- 최소스패닝트리
- c++
- solved.ac플래티넘
- 이중지도
- 백준 알고리즘
- div2개
- 코어자바스크립트
- JS스터디
- 비트마스크
- Today
- Total
목록c++ (43)
호지
처음엔 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]로 초기화 했습니다. (인센티브를 받지 ..
펄스 수열은 두 종류가 있다 [-1, 1, -1...] , [1, -1, 1...] sequence가 주어지면 -1로 시작하는 펄스 수열과 곱해진 s1배열, 1로 시작하는 펄스 수열과 곱해진 s2배열 두가지로 나누어 생각했다. 가장 쉽게 생각할 수 있는 풀이방법은 DFS로 모든 경우의 수를 탐색하는 방법이었다. (하지만 이 방법은 시간 초과이다.) 다음으로 생각해본 방법은 DP이다. 모든 경우의 수를 탐색하면 이미 더했던 부분수열을 다시 더하고 하는 중복과정이 계속 발생한다. 또한 부분수열은 연속해서 이어지는 일렬의 과정이므로 for문 한번으로 해결할 수 있을 것 같았다. 과정은 s1과 s2를 나누어서 계산을 했다. cnt1과 cnt2는 dp배열로, i번째 위치의 의미는 해당 위치에서 나올 수 있는 부분..
BFS를 이용한 문제풀이입니다. 주어진 board에서 robot의 위치를 먼저 구합니다. 로봇은 상하좌우 방향으로 움직일 수 있고, 한 방향으로 움직이다가 장애물 D를 만나거나 board에 끝에 도달할때까지 움직입니다. 로봇이 움직일 수 있는 위치는 list큐에 넣습니다. 움직일 수 있는 위치 여부는 상하좌우(moves배열) 방향을 다 확인하고 한번 방문한 위치는 board를 C로 표기하여 중복 방문을 막습니다. list 큐가 empty면 G에 도달하지 못한 것이므로 -1을 반환하고, 중간에 G에 도달하면 해당위치의 count를 반환합니다. #include #include #include using namespace std; int solution(vector board) { int answer = -1..