BFS에서 큐의 성질을 이용하면 풀 수 있는 문제이다. 하단의 그림을 보게되면 BFS에서는 큐가 다음과 같은 형태 ( 시간대별 로 차례 대로 들어간다.) 따라서 0일차에서의 노드들에 대해서 BFS를 할 때에는 임시로 다른 큐에 담아 놓았다가 BFS용 큐가 비었을때 임시
BFS에서 시작점이 2개이고 시작저믜 종류가 서로 다를 경우에 해당하는 문제이다. 대표적인 유형이다. 불에 대한 BFS를 먼저 돌리고 해당 정보를 기준으로 지훈이에 대한 BFS를 돌리면 된다.과 같이 불이 벽에 막혀 있을경우 제대로 동작하지 않는다. 해당 칸에 대해서
Mine1,2,3,4,5번 CCTV가 놓일 수 있는 방향은 각각 4가지, 2가지, 4가지, 4가지, 1가지 이다.CCTV 종류별로 볼 수 있는 방향을 백트래킹으로 모두 찾는다.해당 CCTV의 종류와 좌표 보고 있는 방향을 인자로 주면 board에 해당 영역을 색칠하는
조건에 맞게 블록을 합치는 방법상하좌우에 대해서 다른 코드를 짜주는것이 아니라 보드 자체를 회전 시킨다는 아이디어를 생각해 내는 것이 중요했던것 같다. 상하좌우로 블록을 합치는 코드를 모두 구현 할 수 는 있었겠지만 디버깅이 너무 오래걸리고 구현 시간이 너무 오래 걸려
문제 분석 > 1. 처음에는 반복문으로 구현하려고 시도 했으나 반복문으로 구현하려다 보니 오히려 더 복잡해졌다. 이후 재귀(DFS)를 이용하는 쪽으로 문제푸는 방식을 수정했다. 시간 복잡도 > 최악의 경우 로봇 청소기가 모든 곳을 청소해야 하기 때문에 시간 복잡도는
적당한 전략을 세워놓지 않고 구현에 들어가서 중간중간에 조건을 끼워 맞추다 보니 코드도 더러워졌고 버그를 잡기도 힘들었다.구현도 구현이지만 이 문제는 데이터를 저장할 자료구조를 선택하는 것이 중요했던 문제였던 것 같다. 나는 위에 처럼 자료구조를 선택했다. 처음부터 이
BFS를 이용하면 깔끔하게 풀이 할 수 있다. 문제를 읽어 가면서 BFS를 써야겠다는 생각은 했지만 구현을 하면서 잔 실수가 많아서 구현을 하는데 시간이 오래 걸렸다.톱니바퀴를 회전시킬때 어떤 톱니바퀴를 돌릴지 정한다음에 한번에 다같이 돌려야 한다. 처음에 문제를 제대
DP 문제 조건을 정확하게 파악해야 풀 수 있는 문제 테이블 정의 점화식 정의 초기값의 정의 만약 이 문제가 DP인 것을 몰랐다면 DP라고 생각하지도 못했을 것 같다.DP임을 알고 문제에 접근 했어도 결국 테이블 정의, 점화식 도출을 아예 하지 못했다. DP
DP DP문제에서 경로를 파악 하고자 하는 경우의 기본 문제 테이블 정의, 점화식 정의, 초기값 설정의 경우 이전에 풀었던 1로 만들기 문제와 같다. 경로 찾기 위의 코드와 같이 TK가 TK-1, Tk/2, Tk/3중에서 어느 곳으로 가는 것이 가장 최적인지 판
\- DFS\- 스택시간 복잡도가 그리 중요하지는 않은 문제였다. 자료구조 수업 시간에 배웠던 스택을 이용한 수식 계산과 DFS에 대해서 이해하고 있다면 그리 어렵지 않은 문제였다. 1\. 우선 순위 설정 (DFS)2\. 문제열을 계산을 위한 토큰으로 만들기3\. 토큰
문제 유형 문제유형은 사실 어느 한 알고리즘을 알아야 풀 수 있는 문제라기 보다는 복합적인 구현능력을 묻는 문제였다고 생각한다.구현은 크게 4가지 포인트로 나눌 수 있을 것 같다.Point1 - 모든 가능한 후보키들의 조합 만들기Point1 - col 갯수에 따른 가
DP 테이블 정의 점화식 정의 scorei = i번째 집을 칠할 때의 비용 ( 문제의 입력 값 ) 초기값의 정의 헤맸던 곳은 딱히 없다. DP 유형 학습 DP는 유형 양치기...?바킹독님의 유튜브 강의 유튜브 강의 영상 정리를 상당히 깔끔하게 잘 해놓으셔서 이해하
특별한 아이디어가 필요하지는 않았다.2차원 배열을 회전 시키는 방법을 알고 있고!문제를 꼼꼼히 읽어가면서 풀었다면 정확하게 풀 수 있다.각각의 칸에 대하여 : 40 x 40각 스티커가 붙을 수 있는지 확인 : 10 x 104가지 방향으로 돌려서 확인 : 4 x 10 x
DP 테이블 정의 점화식 정의 초기값의 정의 분명히 전에 한번 풀어보았던 문제인데 다시 풀지를 못했다.점화식 유도를 아예 하지 못했다. DP 유형 학습 DP는 경험치...? 바킹독님의 유튜브 강의 유튜브 강의 영상 정리를 상당히 깔끔하게 잘 해놓으셔서 이해하
정렬을 위한 알고리즘이다.정확한 설명은 아니지만, 나는 다음과 같이 이해했다. 더이상 자를 수 없을때까지 2개로 자르고, 더 이상 자를 수 없을 경우 각각의 문제들을 병합한다.아마, 이해가 잘 가지 않을 것이다. 그림을 보면 더 직관적으로 이해 할 수 있다.그림에 나온
정렬을 위한 알고리즘이다.pivot을 선택한다.선택한 pivot을 기준으로 pivot보다 작은 값과 큰 값으로 분리한다.나눠진 2개의 배열에 대하여 1,2의 과정을 재귀적으로 수행한다.위의 핵심 아이디어 중에서 퀵 소트에서 눈여겨 봐야 할 부분은 2\. pivot보다
정렬 카테고리에 속하는 문제
DPDP를 이용하면 O(N)에 해결 가능 1\. 테이블 정의 2\. 점화식 구하기 현재 계단을 포함해서 연속해서 1개의 계단을 밟았다는 의미이다. 즉, 2계단 밑의 계단에서 해당 계단으로 왔다는 의미이다.현재 계단을 포함해서 연속해서 2개의 계단을 밟았다는 의미이다
DPDP를 이용하면 O(N)에 해결 가능 1\. 테이블 정의 2\. 점화식 구하기 3\. 초기값 설정 자료형 선택을 잘못했다. long을 사용 했어야 했는데 int를 사용 했다.테이블을 만약, TN : N번째 자리 수의 이친수의 갯수라고 정의한다면, TN = TN
이분탐색 관련 기초 알고리즘들