
\[프로그래머스] 기둥과 보 설치기둥과 보에 대한 설치 기록을 2개의 2차원 배열로 따로 나눠서 기록한다.삭제 과정 처리를 잘해줘야 한다.해당 위치의 기둥과 보를 먼저 삭제해준다. 해당 위치를 포함한 총 6격자의 기둥과 보들이 정상적인지 체크한다.(이미지의 파란점 1개

우선 기본적으로 누적합 문제인 것을 문제를 보고 파악했다.하지만, 문제에서 주어진 구간(adv_time)이 다른 구간들(logs)의 각각의 길이와 크기가 딱 맞아떨어지지 않는 것을 보고 당황해서 나머지 풀이를 생각해내지 못했다.결국은 advTime 만큼의 크기를 구하고
\[코드 트리] 금 채굴하기(JAVA)우선 N 의 범위가 최대 20, M 의 범위가 최대 10 이기 때문에, 완전 탐색 알고리즘으로 풀어야 한다는 것을 깨달았다. 하지만, 처음에 정사각형의 크기에 따른 마름모의 크기를 직접 코드로 구현해주다가 시간을 엉뚱한데 다 썼다.
\[코드 트리] 기울어진 직사각형 (JAVA)일반적으로 코드가 1억 번 동작 한다면 1초의 런타임이 소요 된다고 생각하시면 좋을 것 같습니다.이 문제에서 n 은 최대 20 이며, 20^5=3_200_000이기 때문에 코드가 넉넉하게 돌아가게 됩니다. 실제 테스트에서도
\[코드 트리] 겹쳐지지 않는 두 직사각형 (JAVA)이전에 풀었던 기울어진 직사각형 문제를 복귀하며 풀었던 것이 오히려 독이 되었다.기울어진 직사각형 문제 처럼 가로, 세로(width, height)를 미리 반복문에서 정해주고 난 후에, 2개의 직사각형을 구하려다가
\[코드 트리] 양수 직사각형의 최대 크기 (JAVA)모든 종류의 직사각형을 어떤 방식으로 만들지 알면 쉬운 문제이다.이전에 풀었던 겹쳐지지 않는 두 직사각형 문제에서 처럼 임의의 한 점(i,j) 를 기준으로 (i+x, j+y)를 하면 직사각
\[코드 트리] 2차원 바람 (JAVA)이 문제는 프로그래머스의 행렬 테두리 회전하기 문제와 매우 유사하다.이 문제의 가장 키 포인트는 직사각형 영역의 경계에 있는 숫자들을 시계 방향으로 한칸씩 shift 를 어떻게 하는 것에 있다.나는 여기서 DX, DY 로 직사각형
\[코드 트리] 기울어진 직사각형의 회전 (JAVA)이 문제는 이전에 풀었던 문제인 2차원 바람 문제와 유사하다.한가지 유의해야 하는 점은 직사각형이 행과 열에 평행한 것이 아닌 말 그대로 기울어진 직사각형인 것이다.그래서 시계방향(ClockWise) 혹은 반시계방향(
\[코드 트리] 십자 모양 폭발 (JAVA)특정 위치를 선택하면 해당 위치의 배열값 만큼 십자 모양이 결정되고, 그 모양 만큼 값을 없앤 뒤에 터진 모양 만큼 칸들이 아래로 떨어진다.기억할 만한 점은 총 2가지이다.앞서 문제의 마름모 모양을 결정할 때 맨해튼 거리를 이
\[코드 트리] 1차원 폭발 게임 (JAVA)이 문제에선 1차원 배열로 숫자들(숫자가 쓰여있는 폭탄들💣)이 선언되어 있다.배열의 숫자들 중 M개 이상 연속으로 같은 숫자가 적혀있는 폭탄들은 연속된 폭탄들 전부 터지게 된다. 폭탄이 터지고 난 후에 중력으로 인해 다시
\[코드 트리] 단 한 번의 2048 시도 (JAVA)4x4 크기의 2차원 배열 안에 0을 포함한 2의 배수 들이 채워져 있다.‘L’, ‘R’, ‘U’, ‘D’ 의 방향 중 한가지가 주어지고, 해당 방향에 따라 중력이 작용하여 배열 안의 값들이 전부 밀리게 된다.이때

https://leetcode.com/problems/construct-binary-tree-from-preorder-and-postorder-traversal/description/이진 트리의 전위 순회 순서(int\[] preorder), 후위 순회 순서(

\[leet code] 2467. Most Profitable Path in a TreeAlice, Bob 이 각각의 주어진 노드에서 출발하여, 각 노드에 담긴 amount 를 갖는다. Alice 는 항상 0번 노드에서 출발하여 leaf node 에 도착하면 이동을 멈

\[프로그래머스] 등대트리(무방향 그래프)에서 각 노드에 대해 “등불을 켜야 하는지” 여부를 판단하여, 최소 개수의 등불(Answer)을 설치하는 문제이다.dfs 문제이다.기억할 만한 점은 총 3가지이다.중간 노드인지 리프 노드인지 확인해야 한다.(Graph.get(c
https://www.codetree.ai/trails/complete/curated-cards/challenge-minimum-difference-on-the-integer-grid-2/description?page=1&page_size=20NxN 크기의 M
https://www.codetree.ai/trails/complete/curated-cards/challenge-lis-on-the-integer-grid/description먼저 이 문제를 풀면서 삽질한 풀이를 보여주고 이 풀이가 왜 틀렸는지를 설명해보겠다
1749\. Maximum Absolute Sum of Any Subarray배열의 인덱스 i 까지의 누적 합(PrefixSum)을 s\[i] 라고 정의하면누적 합(PrefixSum): s\[i] = nums\[0]+nums\[1]+⋯+nums\[i]부분 배열의 합 표
\[leet code] 1524. Number of Sub-arrays With Odd Sum초기값 (i = 0) : arr0가 짝수라면, dp\[0]\[0]=1, dp\[0]\[1]=0arr0가 홀수라면, dp\[0]\[0]=0, dp\[0]\[1]=1전이 (i ≥
https://leetcode.com/problems/length-of-longest-fibonacci-subsequence/description/?envType=daily-question&envId=2025-02-27dp\[i]\[j]는 str1의 i번째 문
\[leet code] 873. Length of Longest Fibonacci Subsequence점점 증가하는 양수의 숫자들(오름차순)로만 이루어진 배열 arr 이 있다. 이 배열의 부분 수열 중에 피보나치 숫자들로만 이루어진 가장 긴 수열의 길이를 반환해라.만약
문제에서 다양한 캐시 알고리즘 중 LRU(Least Recently Used)를 사용한다.캐시가 캐시 사이즈에 따라서 저장할 수 있는 양이 달라지기 때문에 캐시 사이즈가 얼마인지 잘 확인해야 한다.Java 의 Collection 중 어느 것을 사용할지 고민했다.처음엔
전형적인 구현 문제이다.블록을 없애는 상황만 유의해주면 된다.checkIf4BlocksAreSame(): 블록이 2×2 형태로 4개가 붙어있을 경우를 따로 2차원 배열(boolean\[]\[] Check)를 만들어 체크해준다. removeBlocks(): 체크가 되어
| \[프로그래머스] 문자열 압축특별한 알고리즘이 있는 줄 알았지만 문제에서 요구하는 사항만 정확하게 수행하면 되는 구현 문제이다.반복문을 돌려주는 것만 유의해주면 된다.for (int chunkSize = 1; chunkSize <= length/2; ++chu