정사각형 형태의 자물쇠와 열쇠가 있고, 열쇠의 크기는 자물쇠보다 작거나 같다.
다수의 시작점에서, 다수의 도착점으로 향하는 문제. 진행 도중 다른 출발점을 들리거나, 도착점을 지나쳐 더 진행할 수 없다.
큐 2개의 시점으로, 양 쪽의 값이 같아지는 최소횟수를 구하는 문제. 자바와 파이썬의 풀이가 약간 다르다. 더 나은 방법에 대해 생각해보자.
문자열을 일정 길이로 쪼개고, 반복되는 문자열을 찾아 압축했을 때 가장 짧게 압축할 수 있는 길이를 구한다. 이번에도, 두 풀이의 방향성이 살짝 다르다.
유저가 들어오고, 닉네임을 변경하고, 나가는 과정을 기록한 후 id에 맞게 닉네임을 매칭해주면 된다.
무난한 BFS, DFS 문제.
순열을 생성하고 조건을 따져 특정 값들을 필터링하는 문제. BFS로 풀어도 되긴 하지만.. 막상 해봤더니 너무 느리고 비효율적이더라. 따라서 DFS로 해결.
최대 공약수를 구하고, 서로소를 나누는 선분으로 사라지는 사각형의 갯수를 구하는 문제. 알고리즘보단 수학적 개념을 요하는 것 같다. 파이썬과 자바의 풀이가 대동소이하므로 한번에 올리고 개념적인 측면으로 접근하도록 하겠다.
문제 링크1, 2, 4로 모든 수를 표현하는 방법. '숫자가 3개이니 3진법 쓰면 되지 않나?' 라는 생각에서 파생한다면 쉽게 풀 수 있다.
앞쪽에서 얻은 날짜를 기준으로, 100일을 넘길 수 있는 연속된 날짜를 구하는 문제.
괄호의 짝이 맞는지 확인하는 간단한 문제.
DFS / BFS 문제.
같은 글자가 뭉치면 터지는 문제. stack을 활용하여 간단히 풀 수 있다.
배열을 회전시키며 최솟값을 기록하는 문제.
단품메뉴 목록에서 정해진 갯수만큼 경우의 수 조합 후 제일 많이 나온 경우의 수들을 알파벳 순서대로 정렬, 출력하는 문제.
균형잡힌 괄호 문자열 두 개로 쪼갠 뒤, 올바른 괄호 문자열인지에 따라 처리를 하는 문제.
주어진 문자열을 2개씩 끊되, 알파벳으로만 이루어진 집합을 만들어 나머지 집합과 비교하는 문제.
가장 작은 값들을 골라 특정 계산식으로 섞는 문제. 계속해서 작은 값들을 골라내야 하므로, heap을 사용해야 한다.
현재 위치에서 2번 진행했을 때, 다른 사람이 있는지 없는지 확인하는 문제. 단, 벽으로 막혀있는 상태에선 진행할 수 없다.
주어진 수식에 사칙연산 우선순위를 정해줬을 때 최댓값이 나오도록 하는 문제. 효율까지 챙기려면 의외로 까다롭다.
격자 내의 빛이 순환하는 길의 길이를 찾아 정렬하여 반환하는 문제. 2단계에서 가장 정답률이 낮다.
직선들의 교점을 찾아 정리한 후 해당 교점들을 모두 포함할 수 있는 크기만큼만 출력하는 문제. 알고리즘상 어렵진 않으나 자료형 이슈가 있었다.
규칙 찾기 문제. 의외로 까다롭다.
상대보다 많은 화살을 맞히며, 점수를 빼앗아오는 문제.
해당하는 자리에 숫자 블록이 설치되는데, 두 번째 최대약수를 찾아내면 된다. 복병은, 길이가 1,000,000,000(십억)인 도로에 1번 블록부터 시작하여 10,000,000(천만)번 블록까지만 규칙대로 설치한다는 것.. 문제를 잘 읽고 풀이해야 한다.
쿼리로 접근하여 원하는 사람의 명수를 얻어오는 문제. 처음 풀 때 '이게 2단계라고?'라는 생각이 마구 들었다.
가로, 세로, 대각선을 살펴봤을 때 겹치는 체스말이 없는지 확인하는 문제.
기존 문자열에서 원하는 문자열을 만들되, 최소로 움직여야 하는 문제. 효율을 생각하고 코드를 구성했으나, 많이 미흡했다. 따라서 다른 분이 푸신 Java 최대 효율 코드의 해석도 첨부.
후보키가 될 수 있는 조합을 찾되, 유일성과 최소성을 지켜야 한다.
원판을 규칙에 맞게 옮기는 문제. 기준 위의 원판들을 치우고, 기준 원판을 옮기고, 나머지 원판을 기준 원판 위에 올리는 방향으로 생각하면 쉬울 수 있다.
현재 노드를 기준으로, 전체 노드 갯수에서 현재 노드 및 하위 노드들의 갯수를 뺀 값의 차가 최소가 되게끔 하는 문제.
주어진 배열에서 최대 정사각형의 크기를 찾는 문제. DP 형식으로 풀면 빠르고 깔끔하게 풀 수 있다. 정답률은 높지만, Python으로 풀 당시 개인적으로 많이 어려워했다.
시작부분부터 정해진 길을 따라 특정 마을까지 갈 수 있는지 없는지를 확인한다.
n개 번호의 조합을 오름차순으로 놓고, k번째 값을 가져오는 문제. 그러나 조합식이 아닌, 다른 방식으로 접근해야 시간초과를 피할 수 있다.
기억한 멜로디와 악보를 비교하여, 네오가 들은 곡이 무엇인지를 찾는 문제. 문자열을 잘 변환해야 한다.
세 가지 방향으로 전진하는 달팽이의 경로를 확인하는 문제. 진행 방향에 따른 규칙을 찾아보자.
공간을 쪼개가며 내부 값을 확인. 잘 쪼개기만 하면 쉬운 문제.
토핑을 기준으로 케이크를 자르는데, 형과 동생이 같은 종류의 토핑을 먹을 수 있는 경우의 수를 구한다. 알고리즘 문제를 풀다기보다, 메서드를 쪼개고 구현하는 데 집중했다.