1. 재귀 함수 설계 원칙재귀란 무엇인가함수가 자기 자신을 호출하는 방식으로 문제를 더 작은 같은 구조의 문제로 쪼개는 기법이다.거울 두 개를 마주 보게 세우면 그 안에서 거울이 무한히 반복된다. 다만 프로그래밍에서 무한 반복은 곧 RecursionError다. 반드시 멈추는 조건이 있어야 한다.팩토리얼이 가장 직관적인 예시다:5! = 5 × 4!4! = 4 × 3!3! = 3 × 2!2! = 2 × 1!1! = 1 ← 여기서 멈춘다def factorial(n): if n 재귀 설계 3단계재귀 함수를 작성할 때 세 가지를 순서대로 결정한다.1단계: 부분 문제 정의─────────────────────────────────────────────"큰 문제를 같은 구조의 작은 문제로 어떻..
백준 Silver V | 7785 | Python | 문제 링크문제 설명직원들의 출입 로그가 순서대로 주어진다. enter이면 입장, leave이면 퇴장이다. 로그를 전부 처리한 뒤 현재 회사에 남아있는 사람을 역순 알파벳으로 출력한다.입력첫째 줄에 로그 수 n (1 ≤ n ≤ 1,000,000)이 주어진다. 이후 n줄에 이름과 enter 또는 leave가 주어진다.출력현재 회사에 있는 사람의 이름을 역순 알파벳으로 한 줄에 한 명씩 출력한다.입출력 예입력출력4Baha enterAskar enterBaha leaveArtem enterAskarArtem나의 풀이풀이 1 - 버그 4개 들어있던 첫 제출import sysinput = sys.stdin.readlinenum = int(input())curre..
백준 Silver IV | 1920 | Python | 문제 링크문제 설명N개의 정수 A[1], A[2], …, A[N]이 주어져 있을 때, 이 안에 X라는 정수가 존재하는지 알아내는 프로그램을 작성하시오.입력첫째 줄에 자연수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 N개의 정수 A[1], A[2], …, A[N]이 주어진다. 다음 줄에는 M(1 ≤ M ≤ 100,000)이 주어진다. 다음 줄에는 M개의 수들이 주어지는데, 이 수가 A 안에 존재하는지 알아내면 된다. 모든 정수의 범위는 -2^31 보다 크거나 같고 2^31 - 1 보다 작거나 같다.출력M개의 줄에 답을 출력한다. 존재하면 1을, 존재하지 않으면 0을 출력한다.입출력 예입력출력54 1 5 2 351 3 7 9 511001..
백준 Silver IV | 2164 | Python | 문제 링크문제 설명N장의 카드가 1부터 N까지 순서대로 쌓여 있다. 맨 위 카드를 버리고, 그 다음 맨 위 카드를 맨 아래로 옮기는 동작을 카드가 1장 남을 때까지 반복한다. 마지막에 남은 카드 번호를 출력하면 된다.입력첫째 줄에 N (1 ≤ N ≤ 500,000)이 주어진다.출력마지막에 남은 카드의 번호를 출력한다.입출력 예입력출력64 나의 풀이풀이 1 - 무한루프가 걸린 첫 제출from collections import dequeimport sysinput = sys.stdin.readlineq = deque()num = int(input())for i in range(1, num+1): q.append(i)while q: if len..
백준 Silver IV | 10845 | Python | 문제 링크문제 설명정수를 저장하는 큐를 구현한 다음, 입력으로 주어지는 명령을 처리하는 프로그램을 작성하시오.명령은 총 여섯 가지이다.push X: 정수 X를 큐에 넣는 연산이다.pop: 큐에서 가장 앞에 있는 정수를 빼고, 그 수를 출력한다. 만약 큐에 들어있는 수가 없는 경우에는 -1을 출력한다.size: 큐에 들어있는 정수의 개수를 출력한다.empty: 큐가 비어있으면 1, 아니면 0을 출력한다.front: 큐의 가장 앞에 있는 정수를 출력한다. 만약 큐에 들어있는 수가 없는 경우에는 -1을 출력한다.back: 큐의 가장 뒤에 있는 정수를 출력한다. 만약 큐에 들어있는 수가 없는 경우에는 -1을 출력한다.입력첫째 줄에 주어지는 명령의 수 N ..
백준 Silver IV | 10828 | Python | 문제 링크문제 설명정수를 저장하는 스택을 구현한 다음, 입력으로 주어지는 명령을 처리하는 프로그램을 작성하시오.명령은 총 다섯 가지이다.push X: 정수 X를 스택에 넣는 연산이다.pop: 스택에서 가장 위에 있는 정수를 빼고, 그 수를 출력한다. 만약 스택에 들어있는 수가 없는 경우에는 -1을 출력한다.size: 스택에 들어있는 정수의 개수를 출력한다.empty: 스택이 비어있으면 1, 아니면 0을 출력한다.top: 스택의 가장 위에 있는 정수를 출력한다. 만약 스택에 들어있는 수가 없는 경우에는 -1을 출력한다.입력첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. ..