2178 미로탐색
16236 아기상어이번문제는 bfs를 사용해야겠다 라는 감은 잡았지만 bfs+까다로운 조건이라 생각보다 어려웠다.그래서 다른분들의 접근방법을 보고 다시 정리하여 풀었다.내가 생각하기에 가장 핵심 조건은1\. 초기 상어의 크기는 2이다.2\. 상어는 자기보다 작은 크기의
2661 좋은 수열이 문제는 백트래킹을 통해 문제를 풀 생각은 했다.나쁜 수열을 체크하는 방법에서 막혔다. 왜냐하면 처음부터 체크하는 방법을 생각했었는데 이 방법은 시간복잡도가 O(n2)이였기 때문이다.그래서 다른분들의 블로그를 찾아보니 뒤에서 부터 수행하면 O(n)으
1759 암호만들기골드 5치고 쉬웠다.처음에 틀려서 왜 틀렸지 하고 봤는데 자음갯수랑 모음갯수를 생각 안하고 풀어서 그랬다.
13335 트럭이 문제는 시물레이션 문제이다.나는 Queue를 사용해서 구현했다.그리고 큐에서 peek()를 통해 맨 처음 들어간 트럭 시간을 통해 poll()했다.정답률이 높은데 생각보다 어렵게 풀었던 것 같다.시물레이션 문제를 더 연습해야겠다!
연산자 끼워넣기이 문제는 나눌 때 주의해야 한다. 음수를 양수로 나눌때 음수값을 양수로 바꾸고 계산 후 다시 음수로 변경해줘야 한다.그리고 부호를 백트래킹을 통해 모든 조합을 계산하여 최솟값과 최댓값을 계산하도록 했다.전역변수에는 list(연산의 조합), arr(연산할
스타트와 링크이 문제는 어떻게 풀어야 하는지는 쉬웠다.그런데 시간초과가 나서 끙끙 앓다가 다른사람 풀이법을 참고했다.나는 6개가 차면 dfs를 돌렸었는데 다른분들의 풀이는 원본의 절반을 탐색하면 dfs를 돌리는 방법을 사용했다. 그리고 방문한 곳만 계산하는 방법을 써서
감시푸는데 시간이 많이 걸렸다.정답률이 높은 것을 보니 내가 구현문제를 잘 못푸는 것 같다.완탐으로 하면 시간초과 날 줄 알았는데 완탐으로 푸는 문제였다.dfs를 통해 방향을 완탐한 뒤 cctv의 타입에 따라 방향을 선정하여 사각지대를 찾았다.
치킨 배달백트래킹을 사용해서 완전탐색을 했다.치킨집의 경우의 수를 모두 탐색해 거리를 계산하여 최솟값을 찾았다.
2001\. 파리 퇴치for문이 무려 4번이나 중첩된다.첫번째 2중 for문은 파리채 좌측상단의 좌표고 두번째 2중 for문은 파리채의 크기만큼 돌리기 때문에 4중 for문이다.
1389 케빈 베이컨의 6단계 법칙플로이드 와샬로 풀었다.각 유저의 모든 유저에 대한 케빈 베이컨 수를 구하고 케빈 베이컨 수의 합이 가장 적은 유저를 구했다.
18808 스티커 붙이기이 문제는 시물레이션이다.(이해는 빨리했지만 문제푸는데 시간초과날까봐 최적화 + 문제풀이 하느라 헷갈려서 시간이 너무 오래걸렸다)조건에 맞게 잘 수행하면 된다.일단 원본 스티커를 우측 상단에서 시작해서 좌측으로 쭉 스캔하고 그 다음에 한칸 내려서
1197 최소 스패닝 트리이 문제는 MST를 공부해야 풀 수 있다.처음에 MST를 모르고 문제만 봤을 때 플로이드와샬 알고리즘인줄 알았는데 아니였다.플로이드 와샬은 하나의 정점에서 모든 정점으로 가는 최솟값을 구하는 것이고MST(최소 스패닝 트리)는 간선에 가중치를 고
1238 파티이 문제를 봤을 때 플로이드 와샬로 풀었다.그리고 다른사람 풀이를 보는데 다익스트라 알고리즘을 사용한다고 했다.그래서 다익스트라를 공부했다...다익스트라와 플로이드와샬은 비용의 최솟값을 찾는 알고리즘은 맞다. 그러나 플로이드 와샬은 모든 정점에 대한 모든
3190 뱀이 문제는 주어진대로 구현하면 된다.0,0에서 시작한다.사과를 먹으면 꼬리는 그대로이며 머리쪽이 길어진다. 즉 몸의 길이가 1 길어진다.벽에 부딪히거나 뱀의 몸통에 부딪히면 게임이 끝난다.언제 게임이 끝나는지 출력하면 된다.나는 queue를 2개 사용하였다.
링크텍스트대표적인 이분탐색 문제이다.탐색해야 되는 범위가 상당히 크기 때문에 for문으로 하나하나 탐색하지 못할때 이분탐색을 사용한다.이분탐색 흐름은1\. 정렬한다.2\. 초기값 start와 나무의 최댓값을 end로 지정한다.3\. while문을 반복하면서 start값
1654 랜선 자르기이 문제도 이분탐색으로 해결한다.앞의 나무자르기와 같이 최대값을 찾는 문제로 end값을 출력하면 된다.처음에 start값을 0으로 설정했는데 만약 테스트 케이스가1 11이 나온다면 start = 0, end = 1, mid = (start+end)/
링크텍스트bfs를 활용하여 풀었다.먼저 불을 이동하고 지훈이를 이동시켰다.불과 지훈이를 같은 이차원 배열에 넣으면 지훈이가 탈출할때의 시간을 처리하기 까다로워서불의 이동은 matrix라는 배열에, 지훈이의 이동은 visited라는 배열에 시간을 저장했다.그리고 만약에
4386 별자리 만들기처음에 이 문제를 접했을 때 거리를 어떻게 구하더라... 까먹었었다.공식은 피타고라스의 정리를 이용하여 아래와 같다.최소 스패닝 트리 이 문제와 다르게 거리를 안주어져서 거리값만 구해서 넣어주면 된다.
카드 합체 놀이카드 중에서 가장 작은값 2개를 뽑아서 더하고 뽑은값을 더한값으로 교체하면 된다.예를들어서 3 2 6이고 위에 교체를 한번한다고 하면작은값 2, 3 두개를 더하고 2+3=5 2,3을 5,5로 교체하면 된다.5, 5, 6이 된다. 그래서 합인 16이 답이
1541 잃어버린 괄호이 문제는 괄호를 적절하게 쳐서 가장 작은 수를 만들면 된다예를들어 55 - 50 + 40이 있으면 55 - (50 + 40) = -35가 되고 제일 작은 숫자이다\+--+, +-+- 등 여러가지 생각해봤는데 -가 나온 시점부터 그냥 빼버리면 가장
1931\. 회의실 배정이 문제는 끝나는 시간 기준으로 오름차순 정렬을 했고 만약 끝나는 시간이 같다면 시작 시간을 기준으로 오름차순을 수행했다.
13913\. 숨바꼭질 4이 문제는 N에서 K로 가는 길과 시간을 출력하는 것이 문제이다.시간은 쉽지만 길은 어려웠다.처음에 모든 길을 저장했었는데 메모리가 초과되었다.그래서 조언받은 방법이 이동을 기록할 배열을 하나 만들고 기록하는 방법이다.그 배열에 다음 인덱스에
1926 그림전형적인 bfs문제이다.딱히 어려운 부분이 없다.
9084 동전dp 문제... 어려웠다오랜만에 풀어서 그런지 대충 규칙은 찾았지만 점화식 도출하는 것이 어려웠다.결국 다른분들 블로그를 찾아보고 풀었다.동전시리즈 더 풀어봐야겠다.
별 찍기 - 10도움받은 링크위 링크를 통해 힌트를 얻었다위와 같은 3x3이 반복된다. 그래서 재귀를 통해 점점점 작게 들어간다예를 들어 27이면9 9 99 9 99 9 9이고 각각이3 3 33 3 33 3 3이 된다고 생각하면 된다
2170 선 긋기이 문제는 그리디 문제이다.시작을 기준으로 오름차순 정렬을 하고 시작이 같으면 끝나는 지점을 기준으로 내림차순을 했다.파악해야 되는 유형이 3가지가 있는데 1\. (1, 10), (2, 5)와 같이 포함되는 유형2\. (1, 4), (2, 6)와 같이
1, 2, 3 더하기1 -> 12 -> 1+1, 23 -> 1+1+1, 2+1, 1+2, 34 -> 1+1+1+1, 2+1+1, 1+2+1, 1+1+2, 2+2, 3+1, 1+3...하다보니 규칙이 dpn = dpn-1 + dpn-2 + dpn-3이라는 규칙을 찾아서
1로 만들기dp가 n만큼 진행한다1에서 부터 시작해서 n으로 간다그래서 dpi = dpi-1 + 1;을 먼저 실행하고 만약 3이나 2로 나눠지면 각각 dpi/3 + 1과 dpi/2 + 1을 수행하면 된다.주의할점은 3과 2를 나눴을때 둘다 만족하는 경우가 6의 배수이므
12852 1로 만들기 2이 문제는 전에 작성했던 \[백준] 1로 만들기 이 문제를 심화하는 느낌이다.인덱스르 저장할 배열을 하나 더 만든다. 그래서 인덱스 타고 타고 가는 느낌이다위 사진은 10을 입력했을때고 첫번째 배열이 연산횟수를 저장하는 배열이고두번째 배열이 1
1003 피보나치 함수이 문제를 하나하나 적다보니 규칙을 찾았다.dpn -> n은 숫자, k는 n의 0과 1의 갯수이다.즉 dp3 = f(3)일때 0의 갯수 1, dp3 = f(3)일때 1의 갯수, 2이다.
11053 가장 긴 증가하는 부분 수열이 문제는 풀다가 값을 어떻게 저장해야될지 감이 안잡혀서 풀이를 봤다.dp에다가 현재값과 이전값들을 비교하면서 dp를 갱신해주면 된다.예를들어 10 20 10 30 20 50 이라는 배열이 있으면i = 1현재값 : 20이전값 : 1
11055 가장 큰 증가하는 부분 수열이 문제는 11053 가장 긴 증가하는 부분 수열과 비슷한 문제이다(참고)인덱스가 0부터 끝까지 반복문이 돌아가고 인덱스 전에 값들에 대해 반복문이 돌아간다.즉 이중 반복문을 사용한다예를들어 첫번째 반복문의 인덱스가 2라고 한다면
11659 구간 합 구하기 4이 문제는 dp에 처음부터 현재 인덱스까지 차곡차곡 값을 갱신한다예시 입력을 예로 들자면dp0 = 5dp1 = dp0 + arr1 -> 5 + 4 = 9dp2 = dp1 + arr2 -> 9 + 3 = 12이런식으로 쭉 갱신하고만약 3~5까
1932 정수 삼각형이 문제는 DP로 풀었다. 첫번째 줄을 제외하고 그냥 누적해서 더해주면 된다.예제를 통해 자세히 보면73 88 1 0이라고 하면 첫번째 줄은 그대로 7, 두번째 줄은 이전줄인 7을 더해주면 된다.그래서 두번째 줄은 10 15가 된다.세번째 줄은 더했
14891 톱니바퀴이 문제는 시물레이션 문제이다.처음에 문제를 이해할때 예시가 이해가 안돼서 좀 찾아봤다.일단 1번 2번 3번 4번의 톱니바퀴가 있다. 만약 2번의 맞닿는 극이 왼쪽은 N극 오른쪽은 S극이고 시계방향으로 돌린다고 한다면 1번의 맞닿는 오른쪽 극은 S이므
14501 퇴사좀 시간이 오래걸렸다아이디어는 되게 쉬웠는데 이전값 중 최신값들을 계속 갱신해줘야되는 부분에서 시간이 걸려서 블로그를 찾아봤다일단 아이디어는 현재 날짜 기준으로 며칠 뒤에 얼마의 보상이 들어오는 것을 dp에다가 저장해주면 된다.그리고 n = 7이라고 가정
11660 구간 합 구하기 5처음에 dp로 해결했는데도 시간초과가 나서 블로그를 봤따.System.out.println으로 출력했었는데 StringBuilder로 바꿔보니 해결완료위 사진을 보면 dp에다가 누적으로 계속 쌓아주면 된다.위 사진 dp 기준으로 첫번째 줄이
9251 LCS이 문제 생각보다 어려웠다.일단 내풀이는 이렇다처음에 같은 문자가 있을때 +1을 하는것이 바로 왼쪽에 있는 값 + 1하는줄 알았는데 계속 틀려서 블로그를 찾아봤다대각선 왼쪽 위에 있는 값을 +1 해야한다.
9465 스티커대충 적은거라 맨 위에 1번 2번 3번만 체크하면 된다. 3가지 경우의 수를 보자일단 dp에 첫번째 값과 두번째값은 계산하기 편하도록 넣어주자 그리고 n이 1부터니까 arr1과 같은 부분은 인덱스 밖으로 나갈 수 있으니 1일 경우를 체크해줘야 된다.나는
11497 통나무 건너뛰기이 문제는 그리디 문제이다.한참 고민하다가 풀이를 찾았다. 순서를 섞어서 인접한 두 통나무의 높이를 크게 하면 된다.문제의 예시처럼 2 4 5 7 9가 있다고 한다면 2 5 9 7 4 가 되어야 |5-9| = 4로 답이 된다.첫번째 2는 앞에서
1744 수 묶기이 문제는 -끼리는 가장 작은 값을 묶어야 가장 커진다.\+끼리는 가장 큰 값을 묶어야 가장 커진다.0은 - 중에서 가장 큰 값이나 안묶으면 가장 크기 때문에 이 점을 생각하고 계산해야 한다.\-와 0끼리 계산하고 +는 +끼리 계산해야 된다.즉 배열이
12865 평범한 배낭유명한 dp문제이다. 못풀어서 블로그를 통해 이해하고 풀었다.(참조한 블로그 링크 : 도움된 링크)이런식으로 풀었다.처음에 처음 물건은 스킵하고 두번째 물건부터 보자면(4,8)인 경우 무게가 4일때 가방에 담아 8이 들어간다.가방 무게가 5인 경우
2467 용액시간 되게 많이 썼다. 바보 같이 스페셜저지인데 그걸 생각못하고 output이 계속 달라서 계속 풀었다 ㅋㅋ...두 용액과 같은 문제이지만 두 용액은 투포인터로 해결했고 용액은 이분탐색을 통해 해결했다.현재 선택한 요소를 element라고 가정하고이분탐색을
1351 무한수열처음에 dp처럼 풀려고 했지만 배열의 최대 크기는 int 값의 최대 크기와 같아서 n의 범위를 모두 담지 못한다.그래서 hashMap을 통해 저장하면 된다.그리고 bottom-up을 통해서 값을 찾으려고 했지만 메모리 초과가 떠버려서 다른사람들의 풀이를
1644 소수의 연속합이해는 쉬운 문제이다.나는 n까지 소수의 배열을 만들어 놓고 시작 인덱스를 0부터 시작해서 인덱스 0, 1, 2 쭉 더하면서 n을 넘으면 다시 시작 인덱스를 1로 시작해서 1, 2, 3 쭉 더하고 같으면 count를 올려주고 break를해서 인덱스
1806 부분합이 문제 계속 틀렸다.처음에는 O(n2)로 풀려했는데 시간초과나서 하나씩 늘려주고 빼주고 하면서 풀었다. 조건이 되게 까다로웠지만 반례체크해가면서 완성했따.없으면 0인것도 체크 안해서 틀리고. 이상인데 같을때만 체크하고 등 문제를 제대로 안읽어서 계속 틀
링크 11000 강의실 배정 문제 풀이 처음에 회의실 배정과 비슷한 유형이라 정렬까지는 생각했다. 정렬까지는 생각했다. 근데 시작점과 끝나는점 둘다 오름차순으로 정렬하고 그 다음에는 못풀어서 사람들 블로그 봤다. 끝나는 점을 기준으로 우선순위 큐를 넣고 강의시간마다
1941 소문난 칠공주이 문제는 풀다가 틀렸다고 떠서 뭐가 문제지 하면서 반례를 찾아봤다. 처음에 모든 경우에 bfs를 통해 탐색하면서 풀었지만 이렇게 풀면 틀렸다고 나온다. 그 이유는이 경우는 bfs로 탐새갛면 절대 못푼다(십자가모양)그래서 찾아본 풀이는위의 좌표를
2573 빙산빡구현 같은 느낌이다. 어렵진 않았지만 시간이 오래 걸렸다. 1\. map배열을 복사해놓고 주위에 빙하가 있는지 없는지 판단한다.2\. 녹은 값을 새로운 2차 배열에 저장해둔다.3\. 새로운 2차배열을 map에다가 뒤집어씌운다.4\. bfs를 통해 빙하가
1963 소수 경로이 문제는 bfs를 통해 문제를 풀었다.1\. 4자리 번호가 있으면 한자리씩 0~9까지 바꾼다.2\. 바꾼 번호가 소수인지 체크한다.(천의 자리가 0이면 안된다.)3\. 소수이고 이전에 만든 숫자가 아니라면 queue에 넣어준다.이렇게 반복해서 찾고자
11048 이동하기이 문제는 DP문제로 오른쪽, 아래, 오른쪽 아래 대각선으로 이동할 수 있는데 그 중 최대값을 뽑아내는 것이다.이동할때마다 이동하기전의 누적값 + 이동할 좌표의 값과 이동할 좌표의 누적값을 비교해서 큰 값을 계속 갱신해주면 된다.이를 점화식으로 나타내
2457 공주님의 정원이 문제는 그리디 문제이다.시간초과의 늪에서 빠져나오질 못해서 다른 사람들의 블로그를 참고했다.(87%쯤에서 계속 시간초과걸림)일단 풀이 방법은 예전에 회의실배정과 같은 문제와 비슷해서 생각보다는 쉽게 접근했다.1\. start를 기준으로 오름차순
17471 게리맨더링처음에 문제를 이해를 못해서 시간이 오래걸렸다.예제 그림을 보면서 입력을 살펴보자일단 첫번째줄 6은 6줄까지 그래프를 표현한다 라고 생각하면 된다.두번째줄은 인구수를 설명하고 있다.세번째줄부터 아래로 6줄은 그래프를 표현한다.세번째 줄 2 2 4 는
14500 테트로미노처음에 bfs를 통해 문제를 해결했다그러나 마지막 예제가 통과가 안된다. 안되는 이유는 사진에서의 분홍색 ㅗ ㅜ ㅓ ㅏ 이 모양을 bfs로는 만들 수 없다. 그래서 나는 1 2 3 4는 탐색을 하고 ㅗ ㅜ ㅓ ㅏ는 따로 코딩해서 최댓값을 찾았다.1\
14499 주사위 굴리기이 문제 푸는데 굴리는 방향에 따라 정육면체 생각하느라 시간도 오래썻고 머리 터지는줄 알았다. 공간감각이 많이 부족한거같다.내풀이그림에서 하단에 동서남북으로 굴렸을때 인덱스가 변경되는 부분은 주사위 인덱스를 0~5까지로 잡고 했었는데 헷갈릴까봐
15663 N과 M(9)푸는데 오래걸렸다. 중복을 제거하고 순서도 유지해야하기 때문에 set중에 LinkedHashSet이라는 것을 사용하자푸는 방법은1\. 정렬한다2\. 백트래킹을 통해서 list에다가 요소 하나하나 넣고 완성된 경우 set에 넣는다(이때 나는 공백도
12927 배수 스위치간단하게 풀었다.반복문을 처음부터 끝까지 돌리면서 현재 전구가 켜져있으면 해당 인덱스를 더해주면서 반복문을 또 돌려서 풀었다.1\. 모든 전구가 꺼져있는지 확인2-1. 모든 전구가 꺼져있으면 리턴2-2. 모든 전구가 꺼져있지 않으면 현재 인덱스값을
14675 단절점과 단절선생각해보면 간단하게 풀 수 있는 문제이다.일단 단절선을 생각해봤을때 어디를 잘라도 그래프가 2개로 나눠진다. 그래서 무조건 yes를 출력했다단절점이 문제이다. 단절점은 만약 루트노드랑 연결된 노드가 1개이거나 리프노드들이면 잘라도 그래프가 1개
15651 N과 M (3)dfs인데 중복을 허용하는 문제이다.
2156 포도주 시식이 문제 푸는데 되게 오래 걸렸다. 비슷한 문제로 계단오르기라는 문제가 있다.이 문제는 DP로 풀어야 하고 3개 연속으로 포도주를 마시면 안된다.(맨 밑의 그림을 보자)1번 인덱스에서 4번 인덱스로 도착하는 경우의 수가 2개가 있다.(1칸 + 1칸과
2866 문자열 잘라내기생각보다 간단하게 풀었다.처음에 문제 이해가 힘들어서 시간이 오래 걸렸다.열로 문자열을 만들어서 각 문자열의 첫번째 문자들을 자르고 중복이 있나 체크한다.1\. 중복이 있다면 종료2\. 중복이 없다면 count값을 올리고 다시 처음부터 실행이 순
16637 괄호 추가하기어떻게 풀어야겠다라는 생각은 다 했는데 괄호를 쳐서 계산하는 부분에서 시간을 엄청 썼다.풀이는 되게 간단하다.먼저 백트래킹을 통해 괄호의 모든 경우의 수를 계산했다. 1번 예시로 들자면 괄호를 치는 방법이이런 경우의 수가 있다. 그리고 괄호의 갯
1655 가운데를 말해요아이디어를 찾는데 시간이 오래걸렸다.이 문제는 간단하게 우선순위 큐를 2개 만들어서 풀었다.작은 값들을 저장할 큐에는 내림차순, 큰 값들을 저장할 큐에는 오름차순으로 설정했다.예제를 통해서 보자면 min값을 peek()하고 현재 들어올 수가 작은
17070 파이프 옮기기1이 문제는 dfs로 완탐 구현 문제이다.나는 대각선 파이프가 3칸 잡아먹는지 모르고 풀다가 자꾸 안풀려서 처음부터 다시 짰다 ㅜㅜ로직은1\. 대각선상태라면 가로, 세로, 대각선 3개 다 가능하다2\. 가로상태라면 가로, 대각선 2개 가능하다3\
11052 카드 구매하기잘하는 친구에게 Top-down방식을 배우면서 풀이를 받았다이거는 N을 넣어서 앞으로 땡기면서 값을 구하는거반대로 0을 넣어서 N의 값을 구하는거이 풀이를 보면서 풀었다. 아직 top-down방식이 잘 떠오르지 않고 재귀도 부족한 것 같다.dp문
10835 카드게임top-down을 통해서 풀었다. 처음에 0으로 셋팅하고 풀었는데 0으로 셋팅하고 풀었었다.0으로 dp배열을 초기화하고 푸니까 문제가 생겼던 것이 0의 값이 나와서 dp 배열에 저장을 했는데 저장을 안한것처럼 계산이 되면서 다시 계산해버리는 문제가 생
1149 RGB거리top down으로 풀었다.0번집에서 색 1번과 2번을 칠한거에 최솟값, 1번집에서 색 0번과 2번을 칠한거에 최솟값,2번집에서 색 0번과 1번을 칠한거에 최솟값그렇게 dp에 저장하고 재귀를 실행시키는 Top-down에서 0번째 집에서 0번색, 1번색
2023 신기한 소수처음에 무지성 dfs를 돌렸지만 시간초과가 나서 더 효율적으로 풀어야 겠다고 생각했다.수를 1의자리부터 1000의자리까지 올라가면서 만약 다 소수라면 값을 출력하도록 만들었다.예를 들어서 7331을 보자면 처음에 0부터 9까지 탐색하면서 1000의자
링크텍스트풀다가 막혀서 풀이를 봤다. 그래도 접근 방법은 비슷해서 쪼끔 뿌듯했다. DP세우는 건 비슷했지만 점화식을 세우는 부분에서 막혀서 참고했다 ㅜㅜDPi는 i는 시작점, j는 도착점이라고 생각하면 된다.ABC라는 문자가 있으면DP1 = ADP1 = AB이런식으로
16935 배열 돌리기 3이 문제는 그냥 빡구현이다. 처음에 index를 잘못 설정해줘서 좀 애먹었지만 잘 구현하면 된다.
14002 가장 긴 증가하는 부분 수열 4이 문제는 예전에 풀었던 가장 긴 증가하는 부분 수열 시리즈랑 비슷했다.처음에 현재값을 기준으로 이전값들을 비교한다. 그리고 만약 현재값이 이전값보다 크면 그 dp현재인덱스에다가 dp이전값인덱스 + 1과 dp현재인덱스를 비교해서
17406 배열 돌리기 4처음에 bfs로 한칸씩 밀다가 벽에 만나면 90도 올리고 이런식으로 풀었지만 시간초과가 발생해서 처음부터 다시 풀었다.그래서 내가 풀이 한 방법은 1\. dfs를 통해서 순번을 정했다.2\. rotate를 해서 돌린다.3\. 행의 최솟값을 구한
1806 부분합이 문제는 투포인터로 풀었다.1\. 현재 값을 sum이라는 변수에 더한다2\. 만약 S 이상이라면 맨 처음에 더했던 요소를 뺀다.3-1. 뺏음에도 불구하고 S 이상이라면 또 처음에 있던 요소를 뺀다.3-2. S보다 작다면 다시 다음 요소를 더해준다.이렇게
2295 세 수의 합이 문제는 이분탐색까진 했는데 3중 for문으로 풀었다. 당연히 O(n3)으로 시간초과가 났다.(n은 1000개 시간제한은 1초) 그래서 풀이를 봤다.풀이는 A+B+C=K니까 A+B = K-C를 이용해서 문제를 풀이하는 것이다. (사람들 되게 똑똑하
11559 Puyo Puyo이 문제 푸는데 문제를 똑바로 안읽어서 헤맸다.상하좌우로 4개 이상 붙은거 한번에 다 처리하고 밑으로 내려야 한다. 그거 말고는 그냥 시물레이션이다.풀이로는 1\. 2중 포문으로 .이 아니라면 탐색 시작한다.2\. 만약 4개 이상이라면 vis
16987 계란으로 계란치기문제가 상당히 긴데 계란으로 계란을 치는 것이다.계란으로 계란을 치게 되면 각 계란의 내구도는 상대 계란의 무게만큼 깎인다.계란을 치는 방법은가장 왼쪽의 계란을 든다.손에 들고 있는 계란으로 깨지지 않은 다른 계란 중에서 하나를 친다. 단,
5430 AC그냥 시물레이션이다. 뒤집기도 있고 삭제도 있는데 뒤집은 상태냐 아니냐에 따라서 앞에서 삭제할지 뒤에서 삭제할지 달라지기 때문에 boolean 값을 통해 뒤집은 상태인지 아닌지 설정했다.그리고 입력받은 원소들을 저장하는 것에서 시간을 좀 보냈다. 내가 한
17135 캐슬 디펜스이 문제는 적이 한턴마다 한칸씩 내려오고 궁수 3명을 적절하게 배치해서 적을 최대한 많이 잡는 게임이다.궁수는 N번행의 바로 아래의 칸에 성이 있고 성에만 배치할 수 있다. 적이 성에 도달하면 사라진다. 그리고 궁수는 적과의 거리가 D이하인 적 중
2252 줄 세우기이 문제는 대표적인 위상정렬 문제이다.위상정렬이란 자세한건 이 블로그를 참고하자위상정렬의 핵심은 사이클이 없어야 하며 방향이 있는 그래프이다.이 문제처럼 순서가 있다면 위상정렬을 통해 순서를 정할 수 있다.위상정렬은 진입차수를 카운트 배열하고 방향그래