Java/알고리즘 썸네일형 리스트형 스텍 / 큐 : 올바른 괄호 문제 이해주어진 문자열이 올바른 괄호인지 판단하는 문제입니다.올바른 괄호의 예: "()", "(())()", "(()())"올바르지 않은 괄호의 예: "((", "))", ")("접근법 1: 개수와 위치 기반 검증아이디어올바른 괄호의 조건을 다음과 같이 정의했습니다:'(' 개수와 ')' 개수가 같아야 함첫 글자는 '('이어야 함마지막 글자는 ')'이어야 함구현import java.util.*;class Solution { boolean solution(String s) { Stack stack = new Stack(); // 1. 첫 글자와 마지막 글자 확인 if (s.charAt(0) != '(' || s.charAt(s.length() - 1).. 더보기 스텍 / 큐 : 같은 숫자는 싫어 문제 이해배열에서 연속된 같은 숫자를 제거하여 하나만 남기는 문제입니다. 예시:입력: [1,1,3,3,0,1,1]출력: [1,3,0,1] 접근 방법왜 스택을 사용하는가?이 문제의 핵심은 가장 최근에 추가된 원소와 현재 원소를 비교하는 것입니다.스택의 top에 있는 값과 현재 값을 비교 (O(1))연속된 같은 숫자를 효율적으로 제거 가능LIFO(Last In First Out) 특성이 문제와 딱 맞음 알고리즘 설계스택을 생성합니다배열을 순회하며 각 원소에 대해:스택이 비어있거나 top과 현재 원소가 다르면 → push같으면 → 무시 (아무것도 하지 않음)최종 스택을 배열로 변환하여 반환 구현 과정초기 아이디어의 오류처음에는 "같으면 기존 것을 빼고 새로운 것을 추가"하는 방식을 생각했습니다:if (stac.. 더보기 스텍 / 큐 : 기능개발 문제 이해여러 기능을 동시 개발, 각각 진행도와 개발속도가 다름앞선 기능이 완료되어야 뒤 기능도 함께 배포 가능각 배포마다 몇 개의 기능이 배포되는지 구하기핵심 아이디어각 기능을 진행도 계산 함수로 만들어서 큐에 저장하고, 하루씩 시뮬레이션하면서 배포 가능한 기능들을 찾는다.접근 방법함수 생성: progress + speed * day 형태의 함수를 각 기능마다 생성큐 활용: 순서대로 처리하기 위해 Queue 사용시뮬레이션: 매일 front()로 체크하여 100 이상이면 pop()배포 카운트: 연속으로 완성된 기능들을 같은 날 배포코드import java.util.*;import java.util.function.Function;class Solution { public int[] solution(.. 더보기 스텍 / 큐 : 프로세스 문제 이해여러 문서들이 프린터 대기열에 있음각 문서마다 중요도가 있다 (숫자가 클수록 중요)프린터 규칙: 현재 문서보다 중요한 문서가 뒤에 있으면, 현재 문서를 맨 뒤로 보내고 중요한 문서를 먼저 인쇄특정 문서가 몇 번째로 인쇄되는지 구하기핵심 아이디어각 문서에 **[중요도, 고유번호]**를 저장하여 큐에서 순서 추적하고, 프린터의 실제 동작을 시뮬레이션한다.접근 방법문서 추적: [중요도, 원래 인덱스] 형태로 큐에 저장큐 활용: FIFO 특성으로 프린터 대기열 구현우선순위 체크: 현재 문서보다 중요한 문서가 뒤에 있는지 확인시뮬레이션: 인쇄 또는 대기열 맨 뒤로 이동 결정코드import java.util.*;class Solution { public int solution(int[] priorit.. 더보기 스텍 / 큐 : 다리를 지나는 트럭 문제 이해트럭 여러 대가 일차선 다리를 건너려고 한다. 다리에는 무게 제한과 길이 제한이 있어서, 모든 트럭이 안전하게 건너는 데 걸리는 최소 시간을 구해야 한다.문제 조건bridge_length: 다리 길이 (트럭이 다리를 건드는 데 걸리는 시간)weight: 다리가 견딜 수 있는 최대 무게truck_weights: 트럭들의 무게 배열 (순서대로 출발)핵심 규칙트럭들은 주어진 순서대로만 출발 가능 (새치기 불가)모든 트럭의 속도는 동일 (1초에 1칸)다리 위 트럭들의 총 무게 ≤ weight 조건 유지트럭은 다리에 동시에 여러 대 있을 수 있음 첫 번째 버전: 클래스 + 큐 2개 사용class Truck { int weight; int exitTime; Truck(int weig.. 더보기 스텍 / 큐 : 주식가격 문제 설명문제 개요주식의 가격이 초 단위로 기록된 배열이 주어질 때, 각 시점에서 "가격이 떨어지지 않은 기간"이 얼마나 되는지 구하는 문제입니다. 핵심 규칙현재 시점부터 몇 초 후에 가격이 떨어지는가?가격이 같거나 올라가는 것은 "떨어지지 않음"으로 간주끝까지 떨어지지 않으면 남은 기간 전체를 반환 예시prices = [1, 2, 3, 2, 3]결과 = [4, 3, 1, 1, 0] 해석:인덱스 0 (가격=1): 끝까지 떨어지지 않음 → 4초인덱스 1 (가격=2): 끝까지 떨어지지 않음 → 3초인덱스 2 (가격=3): 인덱스 3에서 2로 떨어짐 → 1초인덱스 3 (가격=2): 끝까지 떨어지지 않음 → 1초인덱스 4 (가격=3): 마지막 → 0초문제 이해와 접근 방법핵심 아이디어"역방향 사고": 각 시점에.. 더보기 스택 / 큐 스택(Stack)개념LIFO (Last In, First Out) - 마지막에 들어간 것이 먼저 나옴책 쌓기와 같은 구조 - 위에서 넣고, 위에서 빼기주요 연산push(): 맨 위에 요소 추가pop(): 맨 위 요소 제거하고 반환peek() / top(): 맨 위 요소 확인 (제거하지 않음)isEmpty(): 스택이 비어있는지 확인사용 예시되돌리기(Undo) 기능괄호 검사 (올바른 괄호 쌍 확인)함수 호출 관리계산기 (후위 표기법)자바 코드Stack stack = new Stack();stack.push(1); // [1]stack.push(2); // [1, 2]int top = stack.pop(); // 2 반환, [1]int peek = stack.peek(); // 1 .. 더보기 해시 HashMap 기본 문법 정리:// 1. 선언과 생성Map map = new HashMap();// 2. 데이터 추가/수정map.put("key", 10); // 키-값 저장map.put("key", 20); // 같은 키면 값 덮어쓰기// 3. 데이터 조회map.get("key"); // 값 반환 (없으면 null)map.getOrDefault("key", 0); // 값 반환 (없으면 기본값 0)// 4. 존재 확인map.containsKey("key"); // 키 존재 여부 (true/false)map.containsValue(10); // 값 존재 여부 (true/false)// 5. 크기와 비어있는지 확인map.size.. 더보기 이전 1 2 다음