문제링크: https://school.programmers.co.kr/learn/courses/30/lessons/178870?language=python3범위가 1,000,000 까지이므로 중첩 for문은 시간 초과날것으로 예상했다그래서 투포인터 방법을 활용
문제링크 : https://school.programmers.co.kr/learn/courses/30/lessons/181188미사일좌표 s,e 중 e를 기준으로 정렬했다.첫번째 미사일의 e를 배열에 담고 두번째 미사일부터 순회를 하면서미사일의 s가 배열에 있
문제링크 : https://www.acmicpc.net/problem/4991처음 내가 생각한 방법은 다음과 같다.순열을 통해서 먼지순서를 정하고각각의 먼지순서간의 최단거리의 합을 구하고 (bfs 사용)그중에 가장 낮은 값이렇게 구하니 시간초과가 났다. 사실
문제링크 : https://www.acmicpc.net/problem/8980그리디 알고리즘이다.처음에는 시작점, 도착점을 기준으로 정렬을 했는데 도착점만을 기준으로 정렬을 해야했다.1->5를 먼저하면 2->3, 3->4 와 같은 애들은 못할 수 있기 때문이다
문제링크 : https://www.acmicpc.net/problem/14502먼저 벽을 꼭 3개를 세워야하므로 벽을 3개 세웠을 때 바이러스를 퍼트려야한다.바이러스는 상하좌우의 인접한 빈칸으로 이동하므로 bfs를 여기서 사용한다.바이러스의 위치를 큐에 전부
문제링크 : https://www.acmicpc.net/problem/6087마냥 최단거리 문제가 아닌 거울을 횟수를 최소화 하는 문제이므로최단거리보다 더 많은 방문을 거치며 도착했음에도 거울개수가 더적은 경우가 있다.이에 방문했던곳을 재방문할때 거울 사용횟수
문제링크 : https://www.acmicpc.net/problem/2749N이 매우 크기 때문에 재귀로 접근하면 시간초과가 발생하고DP로 접근하면 메모리 초과가 발생한다.피사노 주기를 활용해야 한다고 한다.피사노 주기란?피보나치 수를 K로 나눈 나머지는 항
문제링크 : https://www.acmicpc.net/problem/17471조합을 통해서 선거구를 나눈다. ex) (1,2,3),(4,5,6)bfs를 통해 해당 선거구가 연결 되어있는지 확인.각각의 선거구가 연걸되어있다면 최솟값 비교
문제링크 : https://www.acmicpc.net/problem/2933화살을 쏜다 left, right 번갈아가면서없어진 미네랄의 상,하,좌,우에 미네랄이 있으면 dq에 넣는다.(클러스터)q(클러스터)를 탐색하면서 만약 바닥에 닿은경우는 패스, 공중에
문제링크 : https://www.acmicpc.net/problem/17406지정된 범위의 가로세로는 2s 이다 => 결국 s 만큼 회전함좌 -> 하 -> 우 -> 상 순으로 회전을 시켰을때 (r-s,c-s+1) 값만 비정상적인 값이기 때문에 (r-s,c-s
문제링크 : https://www.acmicpc.net/problem/1520단순 dfs만으로는 시간초과가 난다.=> dp를 활용해서 시간복잡도를 줄여야 함.목표지점 n-1, m-1에 도달하면 시작점에서 도착점까지 성공적으로 방문한 한 가지 경우가 되므로 1을
문제링크 : https://www.acmicpc.net/problem/1937상, 하, 좌, 우로 이동해서 최대 일수를 구한다는 것에서 dfs를 바로 떠올릴 수 있었다.경로를 반복해서 이동하는 문제를 줄이기 위해 dp를 사용하였다.dfs와 dp를 사용하는 것이
문제링크 : https://www.acmicpc.net/problem/2573BFS를 사용해서 조건을 만족하는 빡구현 이였다. (내가 느끼기엔)
문제링크 : https://www.acmicpc.net/problem/14226걸리는 시간의 최솟값을 구한다. 즉, 최단시간을 구해야하니 BFS로 풀면 된다.3가지 연산만 사용해서 이모티콘을 S개 만든다즉, 화면에 이모티콘의 개수 s와 클립보드에 있는 이모티콘
문제링크 : https://www.acmicpc.net/problem/16928N개의 사다리의 (시작점, 끝점)과 M개의 뱀의 (시작점, 끝점)을 각각 dictionary에 넣어준다.bfs()를 수행하는데, 처음에 1번칸에서 시작하므로 q에 1을 넣고 시작한다
문제링크 : https://www.acmicpc.net/problem/10942양 끝의 문자가 다르면 -> 팰린드롬 아님양 끝의 문자가 같을 때, 가운데 문자열이팰린드롬이라면 -> 팰린드롬팰린드롬이 아니라면 -> 팰린드롬 아님가운데 문자열이 팰린드롬인지 아닌지
문제링크 : https://www.acmicpc.net/problem/16637리턴 조건은 인덱스가 마지막에 도착할때 까지이다.인덱스와 인덱스 까지의 계산결과를 들고 다닌다면서 dfs 순회한다.계산 방법은 현재 인덱스(숫자), 현재인덱스+1(기호), +현재인덱
문제링크 : https://www.acmicpc.net/problem/17298스택을 활용해서 접근했다.스택에는 점점 작은 수가 쌓여야한다. => 현재 인덱스의 수와 스택의 마지막 인덱스와 비교해서 현재 인덱스가 더 큰 경우 해당 스택을 pop 하고 현재 인덱
문제링크 : https://www.acmicpc.net/problem/1238다익스트라 기본문제단방향이기 때문에 graph시작점.append(끝점) 을 해주고heap을 통해 최소경로를 찾는다.
문제링크 : https://school.programmers.co.kr/learn/courses/30/lessons/92344못풀어서 카카오 해설을 참고했다.해설링크(https://tech.kakao.com/2022/01/14/2022-kakao-re