1261번: 알고스팟(0,0)에서 (M,N)까지 가는데 드는 최소 비용(벽의 최소치)를 구해야 하기 때문에 최소 배열을 하나 만든 후, BFS로 이동하면서 최소치를 갱신해준다단, 갱신할 필요가 없는 경우 추가로 이동하지 않도록 제한을 건다시간 복잡도를 최소화 하기 위해
문제 링크문제의 범위가 3000이고, 해당 조건의 교통체중을 전부다 BFS로 일일히 돌리면 시간초과가 난다. 따라서 교통체중의 경계값만 표시하고 학교를 가는 최소값은 다익스트라를 사용한다.다익스트라구현우선순위큐로 최적화를 시키지 않았기 때문에O(N^2)일반 BFS로 해
문제 링크최단경로이므로 기본적으로 BFS로 조건에 맞게 탐색한 후, 시간 복잡도 최적화를 위해 check 배열을 사용해 최소값을 갱신한다.다익스트라(Dijkstra)우선순위 큐로 최적화 시켰으므로 O(NlogN)해당 부분을 check 배열로 잘못써서 계속 시간초과가 났
문제 링크N개의 하노이탑을 옮기려면 N-1개의 탑을 빈 공간에 옮긴후, 제일 큰 탑을 목적지로 이동 후, 다시 빈공간에서 목적지로 N-1개를 옮겨야한다.이는 N 개의 하노이 탑을 옮기기 위해서 N-1개의 하노이 탑을 옮기는걸 총 2번 반복해야된다는 소리고, 이는 재귀로
문제 링크최단경로이므로 BFS에 기본 로직들에 맞춰 조건을 구현했다.BFS최단경로니까!O(N^2)방문처리를 한 조건에 안해줘서 메모리 초과가 났었다.바로 추가해줘서 해결했다!더 깔끔하게 리팩토링은 가능할 것 같다..
문제 링크 created : 2024-06-07 문제 떠올린 접근 방식, 과정 시작점이 정해진 최단경로이므로 다익스트라를 사용한다! 하지만 조건이 두개 이상이기 때문에 한가지 기준에 따른 다익스트라를 돌린후, 조건에 맞추어 순회해서 정답을 구한다. 알고리즘과 판
문제 링크100만 까지의 수를 특정 숫자의 합으로 나타내는 문제이다.처음에는 범위가 2000까지여서 1부터 2000까지 전부 더해봤는데 100만이 넘었다.그래서 1부터 차례대로 넣고 뽑는 식으로 구현할려 했는데, 연속된 범위가 발목을 잡았다..100만까지의 수를 표현하
문제 링크조건에 맞추어 문자열을 파싱해서 출력한다!구현O(N)처음에는 아무생각없이 일반 구현인 줄 알고 회전 명령이 들어오는대로 처리를 했더니 시간초과가 났다...일괄적으로 명령을 받아 범위만 확정지은 후에 파싱하는 방법으로 해결했다!또한 O(N)의 시간 복잡도를 유지
문제 링크먼저 구간별로 반복되는 형태를 찾아 반복되는 로직을 정했다.찾다보니 삼각형이 반복되는 것을 알 수 있었고, 그 좌표의 규칙을 찾아재귀로 반복시켰다!재귀O(N^2)처음 로직을 떠올리는게 오래걸렸다..없을 것 같다!
문제 링크일반적인 최단 경로 문제이므로 다익스트라를 사용했다!다익스트라 DijkstraO(V+E)pq에 넣을때 최적화된 값을 넣지 않아서 시간초과가 나는 오류가 있었다...고쳐서 바로 해결했다!이미 pq를 사용해서 없을 것 같다!
문제 링크파티의 수와 거짓말을 판단해야하므로, 그룹화 Union Find 알고리즘을 사용하면 되겠다고 생각했다!유니온 파인드 Union FindO(NlogN)처음에 아무생각없이 find값들을 서로 비교하지 않고, 초기값과 find값을 비교해서 틀리는 문제가 있었다.그룹
문제 링크처음에는 일반적인 브루트포스인줄 알고 DFS, 또는 BFS를 사용하려 했지만입력 범위와 메모리 조건을 보니 일반적인 완전탐색으로는 안될 것 같았다.따라서 DP로 접근하기로 했다!DP 동적 프로그래밍O(N)없다!어떻게 로직을 잘 자면 메모리를 더 줄일 수 있을거
문제 링크기본 최단경로라서 다익스트라를 떠올렸다.근데 이미 BFS로 구현중에 떠올라서 로직만 조금 수정했다..다익스트라 O(V+E)처음에 문제를 잘못읽어서 갱신 방법을 잘못 설정했었다...없을 것 같다!
문제 링크이 문제는 풀이를 떠올리지 못해서 정답을 참고했다...처음에 DP유형의 문제인건 눈치챘지만, 어떤식으로 로직을 짜야할지 감이 오지 않았다.풀이를 공부하던 도중에, 비트마스크 알고리즘에 대해서 알게되었다.다행히 어느정도 이해하게 되어서 다음에 한번 더 풀어보기로
문제 링크그룹화를보고 일반적인 MST에 마지막 한단계만 더 생각하면 될 것 같았다!MST 최소신장트리O(NlogN)Union할때 find 되지 않은 값을 합쳐줘서 틀리는 문제가 있었다..바로 수정해서 통과했다!없을 것 같다!
문제 링크먼저 가장 많이 가져갈 수 있는 가격을 구해야하고, 조건에 맞추어 가방 무게를 검사해야하는 문제다.따라서 처음에는 가방을 크기순으로 내림차순 정렬, 보석은 무게순으로 내림차순 정렬한 이후들어갈 수 있는 최대한의 가치를 가진 보석을 pq 우선순위큐로 골라서 합산
문제 링크주어진 좌표 가수 연결 정보의 순서를 검사해서 출력하면 되므로 그래프의 순서를 탐색하는 알고리즘인 위상 정렬을 사용했다!위상정렬O(V+E)간만에 한번에 맞아서 좋다!없을 것 같다!
문제 링크기본 로직은 BFS로 pq에 카드 게임 진행상황과 현재 카드 소비수를 같이 넣어서, 카드 소비수를 내림차순 기준으로 뽑아내고, 카드를 넣을 수 있는 모든 곳의 수를 탐색해서 게임 성공 유무를 판단한다.BFSO(NlogN)처음에 구현할 때는 손패를 고려안해서
문제 링크처음에는 제한시간이 10초 + 모든 공간을 다 봐야한다고 생각해서 DFS로 접근했다.또한 비숍은 바로 옆의 칸 체스판의 흰색과 검은색칸은 가지 못하므로 2가지 경우로 나누어서DFS를 돌리면 되겠다고 생각했다!깊이 우선 탐색 DFSO(N^2)2가지 경우로 처음에
문제 링크사이클 유무를 판단해야하므로 Union Find로 그룹화가 되었는지 확인하면 된다! 유니온 파인드 Union FindO(N+M) V+E한번에 풀었다!없을 것 같다!
문제 링크이미 정렬이 되어있는 용액의 최소 절댓값을 구하는 문제로, 투 포인터를 사용하면 되겠다고 생각했다!투 포인터O(N)처음에 초기값을 MAXVALUE로 안해줘서 틀렸는데 바로 고쳐서 맞았다!없을 것 같다
문제 링크어제 풀었던 투 포인터의 응용 문제로,N의 범위를 보니 포인터를 하나 더 늘리기만 하면 되겠다고 생각했다!투 포인터O(N^2)없다!없을 것 같다!
문제 링크범위를 보니 N^2 이하의 알고리즘을 사용해야하고, 가장 짧은 것의 길이만 구하면 되므로 슬라이딩 윈도우를 사용해야겠다고 생각했다.슬라이딩 윈도우O(N)범위 설정을 잘못해서 처음에 오답이 났었다.없을 것 같다!
카카오 로그인 인가코드 발급후, 토큰 요청시 401 ERROR 발생공식문서를 찾아보니 클라이언트 시크릿을 적용하고, 시크릿 코드를 포함하지 않으면 나는 오류라는 것을 발견 하지만 나는 시크릿 코드를 활성화 하지 않음이전에는 Json 형식으로 데이터를 보내야 했지만, 최
문제 링크처음엔 DFS 재귀 방식으로 접근했는데 계속 값 초기화 부분에서 오류가 났다난이도를 보고 쉬운줄 알고 접근했는데, 시간안에 풀지 못했다...결국 이번 문제는 정답을 참고해서 풀었고, 다음에 다시 한번 풀기로 했다.백트래킹최악 O(9^N^2)추후 다시 풀어볼 예
문제 링크인접 리스트를 순회하는 방식만 구현하면 된다고 생각해서, DFS나 BFS로 접근했다DFSO(V+E)처음에는 메모리를 고려하지 않고 BFS를 사용했다가 메모리 초과가 난 이후에 DFS로 바꿨다!DP도 가능할 것 같다!
문제 링크 DP로 결과값을 배낭문제처럼 분할해서 접근했다!Memory의 범위가 매우 넓고, 문제 메모리 조건이 128MB로 작기 때문에, cost를 기준으로 잡고 DP 공식을 만들었다!DPO(N)그리디 접근방식에서 틀린걸 깨닫고 DP 방식으로 다시 접근했다없을 것 같다
문제 링크문제의 조건을 보면 간단한 BFS같이 보이지만, 실제로 구현하면 시간초과가 난다.안에서 문제의 조건을 미리 계산하고 중복을 제거하는 자료구조를 사용해야만 시간초과를 해결 할 수 있는 문제였다!BFSO(N^2)해결 로직은 생각했지만, 중복 제거를 구현하는데 H
공통 프로젝트 이후 다시 시작한 알고리즘 재활 훈련
알고리즘 재활 훈련 2일차
알고리즘 감각 되살리기 프로젝트 1주차
알고리즘 재활훈련 1주차
알고리즘 재활 훈련 2주차
알고리즘 재활훈련 3주차
자율 프로젝트 기간에 준비하는 코딩테스트
알고리즘을 잘하기 위해선 어떻게 해야할까