본문 바로가기

전체 글

(162)
섹션 5. Stack, Queue - 6. 공주 구하기 📌 문제 설명정보 왕국의 왕자는 공주를 구하러 가기 위해 순서를 정해야 합니다.왕자들이 원형으로 앉아 있고, 숫자를 외쳐가며 특정 숫자를 외친 왕자는 제외됩니다.마지막까지 남은 왕자가 공주를 구하러 가게 됩니다.📝 입력 & 출력입력첫 줄에 자연수 N(5 ≤ N ≤ 1,000)과 K(2 ≤ K ≤ 9)가 주어집니다.N은 왕자의 수, K는 제외 조건 숫자입니다.출력마지막까지 남은 왕자의 번호 출력🔹 예제 입력 & 출력예제 입력 18 3 예제 출력 1 7💡 해결 방법이 문제는 Queue(큐) 자료구조를 활용한 시뮬레이션 문제입니다.1번부터 N번까지 왕자 번호를 큐에 넣습니다.K-1명은 다시 큐의 뒤로 보내고, K번째는 제거합니다.큐의 크기가 1이 될 때까지 반복하면, 마지막 남은 왕자가 정답입니다.이 ..
섹션 5. Stack, Queue - 5. 쇠막대기 📌 문제 설명여러 개의 쇠막대기를 겹쳐 놓고 위에서 레이저를 수직으로 발사하여 자릅니다. 이때 괄호로 구성된 문자열이 쇠막대기와 레이저의 배치를 나타냅니다.쇠막대기의 시작: '('쇠막대기의 끝: ')'레이저: 인접한 '()'이러한 표현을 바탕으로 잘려진 쇠막대기 조각의 총 개수를 구하는 프로그램을 작성하세요.📝 입력 & 출력입력괄호 표현이 공백 없이 주어집니다 (길이 최대 100,000)출력잘려진 쇠막대기 조각의 총 개수 출력🔹 예제 입력 & 출력예제 입력 1()(((()())(())()))(()) 예제 출력 117 예제 입력 2(((()(()()))(())()))(()()) 예제 출력 224💡 해결 방법Stack을 활용하여 여는 괄호 '('를 저장합니다.닫는 괄호 ')'가 나왔을 때 이전 문자가..
섹션 5. Stack, Queue - 4. 후위식 연산 (Postfix) 📌 문제 설명후위 연산식(Postfix Notation)이 주어지면 이를 계산하여 결과를 출력하는 프로그램을 작성합니다.예를 들어, 중위 표기식 3 * (5 + 2) - 9는 후위 표기식으로 352+*9-가 되고, 계산 결과는 12가 됩니다.📝 입력 & 출력입력첫 번째 줄에 후위 연산식이 주어집니다.연산식의 길이는 50을 넘지 않으며, 식은 1~9의 숫자와 +, -, *, / 연산자로만 이루어집니다.출력계산된 결과를 출력합니다.🔹 예제 입력 & 출력예제 입력 1352+*9- 예제 출력 112💡 해결 방법후위 연산식은 연산자보다 피연산자가 먼저 나오는 구조입니다.숫자가 나오면 Stack에 push하고, 연산자가 나오면 Stack에서 두 개의 숫자를 pop하여 연산한 뒤 다시 push합니다.식의 끝까..
섹션 5. Stack, Queue - 3. 크레인 인형뽑기(카카오) 📌 문제 설명크레인 인형뽑기 기계를 모바일 게임으로 구현하려고 합니다.N x N 격자에 인형들이 쌓여 있으며, 사용자 입력에 따라 크레인이 특정 열에서 인형을 집어 바구니에 넣습니다. 바구니에는 인형이 순서대로 쌓이며, 같은 모양의 인형이 연속으로 두 개 쌓이면 터지며 사라집니다.이때 사라진 인형의 총 개수를 구하는 프로그램을 작성하세요.📝 입력 & 출력입력첫 줄에 자연수 N (5 ≤ N ≤ 30)다음 N줄에 N x N 크기의 2차원 배열 board가 주어집니다 (0은 빈칸, 1~100은 인형)다음 줄에 moves 배열의 길이 M (1 ≤ M ≤ 1000)마지막 줄에 크레인의 작동 순서를 나타내는 moves 배열출력사라진 인형의 총 개수 출력🔹 예제 입력 & 출력예제 입력 150 0 0 0 00 0..
섹션 5. Stack, Queue - 2. 괄호문자제거 📌 문제 설명입력된 문자열에서 소괄호 ( ) 사이에 존재하는 모든 문자를 제거하고, 남은 문자만 출력하는 프로그램을 작성하세요.📝 입력 & 출력입력첫 줄에 문자열이 주어집니다. (길이 ≤ 100)출력소괄호 안의 문자를 모두 제거한 나머지 문자열 출력🔹 예제 입력 & 출력예제 입력 1(A(BC)D)EF(G(H)(IJ)K)LM(N) 예제 출력 1EFLM💡 해결 방법Stack을 활용해 괄호 내부의 문자들을 제거하는 방식문자 하나씩 순회하면서 여는 괄호 (부터 닫는 괄호 )까지 Stack에서 제거괄호 외부의 문자만 Stack에 남게 됨💻 코드 구현 (Java)package partStackQueue;import java.util.Scanner;import java.util.Stack;public cla..
섹션 5. Stack, Queue - 1. 올바른 괄호 📌 문제 설명괄호로 이루어진 문자열이 주어질 때, 괄호가 "올바른 구조"인지 판단하는 문제입니다.괄호가 열리면 (, 닫히면 )입니다.올바른 괄호란 닫는 괄호가 항상 여는 괄호보다 뒤에 오며 전체적으로 짝이 맞는 경우를 의미합니다.예: (()())는 올바르며, (()나 ())(는 올바르지 않습니다.📝 입력 & 출력입력한 줄에 괄호 문자열이 주어집니다. (길이 ≤ 30)출력올바른 괄호이면 YES, 아니면 NO를 출력합니다.🔹 예제 입력 & 출력예제 입력 1(()(()))(() 예제 출력 1NO 💡 해결 방법Stack 자료구조를 활용합니다.여는 괄호 (는 스택에 push합니다.닫는 괄호 )가 나오면 스택에서 pop합니다.이때 스택이 비어 있으면 짝이 맞지 않으므로 "NO"를 반환합니다.반복이 끝난 후에..
섹션 4. HashMap, TreeSet - 5. K번째 큰 수 📌 문제 설명1부터 100 사이의 자연수가 적힌 N장의 카드 중, 3장을 뽑아 합한 값을 모두 기록한 뒤, 그 중 K번째로 큰 수를 구하는 문제입니다.같은 숫자의 카드가 여러 장 있을 수 있습니다.모든 조합의 합을 고려하고, 중복된 합은 제거한 뒤 K번째 수를 찾습니다.📝 입력 & 출력입력첫째 줄: 자연수 N (3 ≤ N ≤ 100), K (1 ≤ K ≤ 50)둘째 줄: N개의 카드 숫자 (1 ~ 100)출력K번째로 큰 수 출력 (존재하지 않으면 -1 출력)🔸 예제 입력 & 출력예제 입력 110 313 15 34 23 45 65 33 11 26 42 예제 출력 1143 💡 해결 방법중복된 합을 제거하면서 내림차순 정렬된 순서로 저장하기 위해 TreeSet 사용3중 for문으로 가능한 모든 3장의 ..
섹션 4. HashMap, TreeSet - 4. 모든 아나그램 찾기 📌 문제 설명S 문자열에서 T 문자열과 아나그램이 되는 부분 문자열의 개수를 구하는 문제입니다.아나그램: 철자 구성과 개수가 같고, 순서만 다른 문자열부분 문자열은 연속된 문자열이어야 합니다.대소문자 구분📝 입력 & 출력입력첫째 줄: S 문자열 (길이 ≤ 10,000)둘째 줄: T 문자열 (길이 ≤ S 문자열)출력아나그램이 되는 부분 문자열의 개수 출력🔸 예제 입력 & 출력예제 입력 1bacaAacbaabc 예제 출력 13💡 해결 방법슬라이딩 윈도우 + HashMap 비교를 사용하여 효율적으로 풀 수 있습니다.윈도우 크기를 T 문자열 길이만큼 고정하고, 하나씩 옮겨가며 비교equals()로 두 HashMap이 같은지 비교핵심 알고리즘T 문자열을 기준으로 알파벳 개수 tMap 생성S 문자열의 처음 ..