목록프로그래밍 기초/Data structure & Algorithm (20)
Groo

안녕하세요, 오늘은 정말 오랜만에 코딩 테스트 연습 문제를 풀이하려고 합니다. 이번 문제는 2018 카카오 블라인드 채용에서 출시되었으며 꽤 난이도가 있는 문제입니다. 📚 문제 설명 네오는 평소 프로도가 비상금을 숨겨놓는 장소를 알려줄 비밀지도를 손에 넣었다. 그런데 이 비밀지도는 숫자로 암호화되어 있어 위치를 확인하기 위해서는 암호를 해독해야 한다. 그러나 다행히도 네오는 지도 암호를 해독할 방법을 적어놓은 메모도 운 좋게 함께 발견했다. 1. 지도는 한 변의 길이가 n인 정사각형 배열 형태로, 각 칸은 공백("") 또는 벽("#") 두 종류로 이루어져 있다. 2. 전체 지도는 두 장의 지도를 겹쳐서 얻을 수 있다. 지도1 또는 지도2 중 어느 하나라도 벽인 부분은 전체 지도에서도 벽이다. 3. 지도1..

안녕하세요, 오늘은 여러분들에게 문자열 검색이라는 자료구조에 대해서 설명하려고 합니다. 문자열 검색은 자료구조에서 정말 중요하며 문자열을 자유자재로 다룰 수 있다면 많은 도움이 될 것입니다. 📬 문자열 검색이란? 문자열 검색은 어떤 문자열 안에 특정 문자열이 존재하는지를 조사하고 만약 특정 문자열이 존재한다면 그 문자열의 위치를 찾아내는 자료구조라고 할 수 있습니다. 대표적인 문자열 검색 자료구조로는 브루트 포스법과 KMP법 그리고 Boyer Moore법이 존재합니다. 📸 브루트 포스법 브루트 포스법은 문자열 검색 자료구조 중 가장 간단한 자료구조이며 선형 검색을 확장한 알고리즘으로 단순법, 소박법이라고도 부릅니다. 원본 문자열 텍스트에서 검색하고자 하는 특정 문자열 패턴을 배열을 통해 순차적으로 이동하..

안녕하세요, 오늘은 오랜만에 코딩 테스트 연습 문제에 대한 글을 작성하려고 합니다. 이번 문제는 2020년 카카오 인턴쉽에서 출제되었으며 조금 수준이 있는 문제라고 할 수 있습니다. 📚 문제 설명 스마트폰 전화 키패드의 각 칸에 다음과 같이 숫자들이 적혀 있습니다. 이 전화 키패드에서 왼손과 오른손의 엄지손가락만을 이용해서 숫자만을 입력하려고 합니다. 맨 처음 왼손 엄지손가락은 * 키패드에 오른쪽 엄지손가락은 # 키패드에 위치하며 엄지손가락의 사용 규칙은 다음과 같습니다. 1. 엄지손가락은 상하좌우 4가지 방향으로만 이동할 수 있으며 키패드 이동 한 칸은 거리로 1에 해당합니다. 2. 왼쪽 열의 3개의 숫자 1, 4, 7을 입력할 때는 왼쪽 엄지손가락을 사용합니다. 3. 오른쪽 열의 3개의 숫자 3, 6..

안녕하세요, 오늘도 역시 코딩 테스트 연습 문제를 함께 풀어보는 시간을 가지도록 하겠습니다. 이번 문제는 배열을 활용하며 난이도 또한 저번 문제보다 쉬워 어렵지 않게 해결할 수 있을 것입니다. 📚 문제 설명 배열 array의 i번째 숫자부터 j번째 숫자까지 자르고 오름차순으로 정렬했을 때 k번째에 있는 수를 구하려 합니다. 예를 들어 array가 [1, 5, 2, 6, 3, 7, 4], i = 2, j = 5, k = 3이라는 조건이 존재한다고 가정한다면 1. array의 2번째부터 5번째까지 자르면 [5, 2, 6, 3]입니다. 2. 1에서 나온 배열을 오름차순으로 정렬하면 [2, 3, 5, 6]입니다. 3. 2에서 나온 배열의 3번째 요소의 숫자는 5입니다. 배열 array, [i, j, k]를 원소..