문제설명입력 & 출력 나의 풀이 이번 문제는 요세푸스 순열에 대한 문제입니다. 요세푸스 순열이란 문제에서 나와있듯이 "원형으로 앉아 있는 N명의 사람들이 순서대로 제거되는 과정 "입니다. 이 때 매번 K번째 사람을 제거하며, 마지막 한 사람이 남을 때까지 이 과정을 반복합니다. 이해를 돕기위해 위 그림을 기준으로 예로 들자면 8명의 사람이 위와 같이 원형으로 앉아 있습니다.1번째 사람부터 제거를 하면 3 ➡️ 6 ➡️ 1 ➡️ 5 ➡️ 2 ➡️7➡️4 ➡️ 8 순서로 제거가 됩니다. 초기 상태 1, 2, 3, 4, 5, 6, 7, 8첫 번째 제거 1, 2, 3, 4, 5, 6, 7, 8 (3 제거)두 번째 제거 4, 5, 6, 7, 8, 1, 2 (6 제거)세 번째 제거 7, 8, 1, 2, 4, 5..
자바를 활용하다 보면 데이터를 먼저 들어온 순서대로 처리해야 하는 상황과 함께 데이터를 양쪽 끝에서 효율적으로 추가하거나 삭제해야 하는 경우가 있습니다. 이때 사용할 수 있는 것이 덱(Deque)입니다. 이번 포스팅에서는 덱(Deque)에 대해서 알아보겠습니다. Deque 덱이란 ❓ 덱(Deque)은 자바에서 제공하는 자료구조 중 하나로, 양 끝에서 삽입과 삭제가 모두 가능한 더블 엔드 큐(Double Ended Queue)의 줄임말의선형 자료구조입니다. 큐(Queue)에서는 FIFO(First-In-First-Out) 방식으로 동작스택(Stack)에서는 LIFO(Last-In-First-Out) 방식으로 동작 덱은 큐(Queue)와 스택(Stack)의 특징을 모두 가지고 있어서 양쪽 끝에서 빠르게 데..
문제설명입력 & 출력 나의 풀이 이번 문제는 영화감독 숌은 영화 제목에 '666'이 포함된 숫자를 사용하여 영화 제목을 만들 때 쇼메이 만든 N번째 영화 제목에 사용된 숫자를 구하는 프로그램을 작성하는 문제입니다. 저의 접근 방식은 다음과 같습니다. 숫자를 666부터 시작하여 순차적으로 증가시킵니다.각 숫자에 '666'이 포함되어 있는지 검사합니다.'666'이 포함된 숫자를 찾을 때마다 카운트를 증가시킵니다.N번째로 '666'이 포함된 숫자를 찾으면 그 숫자를 출력합니다. 풀이 설명을 하자면 먼저 빠른 입력을 위해 Buffer를 사용하여 입력을 받아줍니다. 그리고 문제 자체에서 요구하는 사항이 666이 포함된 수를 찾는 것이기 때문에 앞서 접근방식에서 말한 대로 666을 시작 숫자로 지정합니다. 그리고 ..
문제설명입력 & 출력 나의 풀이 이번 문제는 가로는 2로 고정되어 있고 입력받은 N의 세로 크기만큼의 직사각형에 2x1, 1x2크기의 타일을 채워 넣을 수 있는 경우의 수를 구하는 문제입니다. 부분 문제의 중복큰 문제를 작은 부분 문제로 나눌 수 있습니다.위 그림처럼 n-1인 직사각형에 2×1 타일을 세로로 놓는 경우와, 크기가 n-2인 직사각형에 1 ×2 타일 두 개를 가로로 놓는 경우로 나눌 수 있습니다. 이렇게 작은 부분 문제들이 중복되어 나타납니다. 최적 부분 구조 DP 문제는 작은 부분 문제의 최적해를 이용해 전체 문제의 최적해를 구할 수 있는 최적 부분 구조를 가집니다.n이 1~5일때 타일을 배치할 수 있는 경우의 수는 위와 같습니다. 그림을 자세히 보면 n일 때는 n-1의 타일에 2x1타일..