전체 글 251

[정글 알고리즘]-[하]-백준 10828 스택

블록 없이 인라인 스타일만 사용합니다. -->처음엔 split() 없이 풀어보려 했다. 그게 통과는 됐는데, 시간 초과가 났다. 그 다음엔 왜 느렸는지까지 따라가 봤다.문제 — 백준 10828 스택정수를 저장하는 스택을 구현한다. 명령이 주어지면 각각 처리하고 결과를 출력한다.항목내용문제 번호백준 10828난이도실버 4분류자료구조, 스택명령 종류push X, pop, size, empty, top입력 범위명령 수 N ≤ 10,000명령별 동작명령동작출력push X정수 X를 스택에 넣는다없음pop맨 위 원소를 꺼낸다. 비어 있으면 -1꺼낸 값 또는 -1size스택에 들어 있는 원소 수원소 개수empty비어 있으면 1, 아니면 01 또는 0top맨 위 원소를 확인한다. 비어 있으면 -1맨 위 값 또는 -1핵..

[정글 알고리즘]-[하]-백준 2164 카드2

블록 없이 모든 스타일이 인라인으로 처리되어 있습니다.-->처음 코드를 쓰고 실행했는데 에러가 없었다. 결과는 틀렸는데 에러가 없으니 더 찾기 어려웠다.N장의 카드가 위에서부터 1번, 2번, …, N번 순서로 놓여 있다. 다음 동작을 카드가 1장 남을 때까지 반복한다.맨 위 카드를 바닥에 버린다.그 다음 맨 위 카드를 맨 아래로 옮긴다.마지막에 남은 카드 번호를 출력한다.항목내용문제 번호백준 2164난이도실버 4분류자료구조, 큐핵심 자료구조collections.deque핵심 연산popleft() — 앞에서 꺼내기, append() — 뒤에 추가입력 범위1 ≤ N ≤ 500,000예제N답64447611처음 작성한 코드 — 버그 4곳n = int(input())list = []for i in range(n)..

[정글 알고리즘]-[하]-백준 9933 - 민균이의 비밀번호

예제를 처음 봤을 때 잠깐 멈췄다. 뒤집은 단어가 따로 없는 것처럼 보였기 때문이다. 조건을 다시 읽고 나서 회문이라는 걸 알았다.문제 소개단어 목록에서 비밀번호를 찾는 문제다. 조건은 하나다. 비밀번호를 뒤집은 문자열도 같은 목록에 있어야 한다. 비밀번호를 찾으면 길이와 가운데 글자를 출력한다. 모든 단어의 길이는 홀수로 보장된다.항목내용입력단어 수 N (2 ≤ N ≤ 100), 소문자 단어 N개 (길이 3~13, 홀수)출력비밀번호 길이, 가운데 글자 (답은 유일)핵심 개념문자열 뒤집기, 회문(palindrome), 리스트 탐색난이도브론즈 1핵심 조건 분석예제 2의 입력을 하나씩 확인해보면 이렇다.단어뒤집기목록에 존재?kisikkisik✅ (자기 자신 = 회문)ptqqtp❌tttrpprttt❌tulip..

[정글 베이직 19] — 해시 테이블 · 성적 관리

📋 문제 소개문제 설명해시 테이블(딕셔너리)을 사용하여 학생 성적을 관리한다. Key-Value 쌍으로 빠른 검색, 삽입, 삭제가 가능하다. 파이썬의 dict는 내부적으로 해시 테이블로 구현되어 있다.INPUT학생 이름과 점수로 구성된 딕셔너리 studentsOUTPUT평균 점수, 최고 점수 학생 이름, 최고 점수 / 특정 학생 점수 조회예제입력students = {Alice:85, Bob:92, Charlie:78, David:95}출력평균: 87.5최고: David (95점)💡 힌트평균: sum(scores.values())/len(scores). 최고점: max(scores, key=scores.get).① 문제 이해항목내용문제딕셔너리로 학생 성적을 관리한다 (평균, 최고점, 조회).자료구조파이..

[정글 베이직 18] — 연결 리스트 (Linked List)

📋 문제 소개문제 설명단순 연결 리스트(Linked List)를 구현한다. 노드는 값(data)과 다음 노드를 가리키는 포인터(next)를 가진다.INPUT연결 리스트에 추가할 값들 (append 메서드 호출)OUTPUT연결 리스트의 모든 값 (리스트 형태로 반환)예제입력ll.append(1); ll.append(2); ll.append(3)출력[1, 2, 3]💡 힌트Node 클래스: data와 next 포인터. LinkedList 클래스: head 포인터. append()로 끝에 추가.① 문제 이해항목내용문제단순 연결 리스트를 구현한다 (append, print_list).구조Node(data, next) + LinkedList(head)예제1→2→3 append 후 [1,2,3] 반환② 핵심 아이..

[정글 베이직 17] — 우선순위 큐 · 응급실 관리

📋 문제 소개문제 설명우선순위 큐를 사용하여 환자를 우선순위에 따라 처리한다. 숫자가 작을수록 우선순위가 높다 (1 > 2 > 3).INPUT(이름, 우선순위) 튜플 리스트 patientsOUTPUT우선순위에 따라 처리된 환자 이름 리스트예제입력patients = [("김철수",3),("이영희",1),("박민수",2)]출력처리: 이영희 (우선순위: 1)처리: 박민수 (우선순위: 2)처리: 김철수 (우선순위: 3)💡 힌트heapq 모듈 사용. heappush()로 힙에 추가, heappop()으로 최솟값 제거.① 문제 이해항목내용문제환자를 우선순위(숫자 낮을수록 높음) 순으로 처리한다.자료구조최소 힙 (Min Heap) — heapq 모듈예제[("김철수",3),("이영희",1),("박민수",2)] → ..

[정글 베이직 16] — 큐 · 프린터 대기열

📋 문제 소개문제 설명큐(Queue)를 사용하여 프린터 작업을 입력 순서대로 처리한다. FIFO(First In First Out) 구조를 활용한다.INPUT인쇄 작업 리스트 jobs (예: ["문서A", "문서B", "문서C"])OUTPUT작업이 처리되는 순서 (리스트)예제입력jobs = ["문서A", "문서B", "문서C"]출력처리: 문서A처리: 문서B처리: 문서C💡 힌트파이썬에서 큐 구현 시 deque 사용. append()로 뒤에 추가, popleft()로 앞에서 제거.① 문제 이해항목내용문제프린터 작업을 입력 순서대로(FIFO) 처리한다.자료구조큐 (FIFO — First In First Out)예제["문서A","문서B","문서C"] → 순서대로 처리② 핵심 아이디어리스트로 큐를 구현하면 p..

[정글 베이직 15] — 스택 · 괄호 짝 맞추기

📋 문제 소개문제 설명스택(Stack)을 사용하여 괄호 문자열이 올바르게 짝지어져 있는지 확인한다. LIFO(Last In First Out) 구조를 활용한다.INPUT괄호 문자열 s (예: "(())", "(()", ")(")OUTPUT올바른 괄호면 True, 아니면 False예제입력s = "(())"출력True💡 힌트여는 괄호 '('는 스택에 push, 닫는 괄호 ')'를 만나면 pop. 마지막에 스택이 비어있으면 True.① 문제 이해항목내용문제괄호 문자열이 올바르게 짝지어졌는지 확인한다.자료구조스택 (LIFO — Last In First Out)예제"(())" → True, "(()" → False② 핵심 아이디어'(' 를 만나면 스택에 push, ')' 를 만나면 pop한다. 빈 스택에서 p..

[정글 베이직 14] — 머지 정렬 (Merge Sort)

📋 문제 소개문제 설명머지 정렬(Merge Sort) 알고리즘을 구현한다. 배열을 절반으로 나누고, 각각을 정렬한 후 두 포인터로 병합한다.INPUT정렬되지 않은 정수 배열 arrOUTPUT오름차순으로 정렬된 배열예제입력arr = [38, 27, 43, 3, 9, 82, 10]출력[3, 9, 10, 27, 38, 43, 82]💡 힌트배열을 절반으로 분할(재귀) → 각 부분 정렬 → 정렬된 두 부분을 병합.① 문제 이해항목내용문제머지 정렬로 배열을 오름차순 정렬한다.특징안정 정렬(Stable Sort), 항상 O(n log n) 보장예제[38,27,43,3,9,82,10] → [3,9,10,27,38,43,82]② 핵심 아이디어반으로 나누고 → 각각 재귀 정렬 → 두 정렬된 배열을 두 포인터로 병합한다..

[정글 베이직 13] — 퀵 정렬 (Quick Sort)

📋 문제 소개문제 설명퀵 정렬(Quick Sort) 알고리즘을 구현한다. 피벗(pivot)을 기준으로 작은 값과 큰 값을 분할하여 재귀적으로 정렬한다.INPUT정렬되지 않은 정수 배열 arrOUTPUT오름차순으로 정렬된 배열예제입력arr = [10, 7, 8, 9, 1, 5]출력[1, 5, 7, 8, 9, 10]💡 힌트피벗 선택(보통 마지막 원소). 피벗보다 작은 원소는 왼쪽, 큰 원소는 오른쪽으로 분할 후 재귀.① 문제 이해항목내용문제퀵 정렬로 배열을 오름차순 정렬한다.피벗 선택마지막 원소 arr[high]예제[10,7,8,9,1,5] → [1,5,7,8,9,10]② 핵심 아이디어피벗 기준으로 작은 값을 왼쪽, 큰 값을 오른쪽에 모은 뒤 피벗을 제자리에 놓는다. 그 다음 왼쪽과 오른쪽을 재귀적으로 ..