문제 풀이 문제 설명은 해당 링크를 참조하자. 쪼개는 문자 개수 단위를 1 ~ n / 2 까지로 설정하여 쪼개서 압축한 다음 각각의 문자열 길이를 세면 된다. 여기서 문자열 길이가 1인 경우 1/2 = 0이기 때문에 쪼갤 수가 없으니 따로 값을 반환해야 하므로 주의하자.
문제 풀이 문제 설명은 해당 링크를 참조하자. 각 단계를 그대로 구현하면 되는 단순한 문제다. 그나마 까다로운 거리가 있다면 올바른 문자열인지를 판단하는 방법일 것이다. 이는 stack을 이용하면 판단할 수 있다.
문제 풀이 문제 설명은 다음 링크를 참조하자. 우선 key를 90도 단위로 회전한 배열을 반환하는 rorate 함수를 선언한다. 그 다음 key를 평행이동하면서 lock에 맞출 수 있는지를 판단하는 canMatch 메서드를 선언한다. key를 세로 방향으로 rowStart, 가로 방향으로 colStart 만큼 평행이동 시킨다. 그 다음 lock과 ke...
문제 풀이 문제 설명은 해당 링크를 참조하자. 각 쿼리(n개), 각 단어(m개)를 매칭하여 비교하려고 하면 시간 복잡도가 O(nm)이어서 호율성 테스트를 통과할 수가 없다. 따라서 단어를 최대한 그룹화할 필요가 있는데, 이때 사용할 수 있는 것이 바로 Trie라는 자료구조이다. 'f'와 'k'보다 위에 있는 root로는 아무 문자도 들어있지 않은 빈 n...
문제 풀이 문제 설명은 해당 링크를 참조하자. solution 함수 호출 시 매개변수로 n을 준 것에는 이유가 있다. n * n 크기로 좌표평면의 범위를 제한하기 위해서다. 결국 좌표의 개수는 유한하게 되는 것이고, map을 이용하여 모든 좌표와 해당 좌표에 위치한 구조물을 대응시킬 수 있게 되는 것이다. 우선 Solution의 내부 클래스로 좌표 평면...