[백준27433/Python] 팩토리얼 2 https://www.acmicpc.net/problem/27433문제0보다 크거나 같은 정수 N이 주어진다. 이때, N!을 출력하는 프로그램을 작성하시오.입력첫째 줄에 정수 N(0 ≤ N ≤ 20)이 주어진다.출력첫째 줄에 N!을 출력한다.예제 입력 1 복사10예제 출력 1 복사3628800예제 입력 2 복사0예제 출력 2 복사1풀이 n이 0 또는 1일 경우 1 반환아닐경우 n * f(n-1)코드n = int(input())def factorial(n): if n == 0 or n ==1: return 1 else: return n * factorial(n - 1)print(factorial(n))--
[백준1158/Python] 요세푸스 문제 https://www.acmicpc.net/problem/1158문제요세푸스 문제는 다음과 같다.1번부터 N번까지 N명의 사람이 원을 이루면서 앉아있고, 양의 정수 K(≤ N)가 주어진다. 이제 순서대로 K번째 사람을 제거한다. 한 사람이 제거되면 남은 사람들로 이루어진 원을 따라 이 과정을 계속해 나간다. 이 과정은 N명의 사람이 모두 제거될 때까지 계속된다. 원에서 사람들이 제거되는 순서를 (N, K)-요세푸스 순열이라고 한다. 예를 들어 (7, 3)-요세푸스 순열은 이다.N과 K가 주어지면 (N, K)-요세푸스 순열을 구하는 프로그램을 작성하시오.입력첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 5,000)출력예제와 같이 요세푸스 순열을 출력한다.예제 입력 1..
[백준10845/Python] 큐 https://www.acmicpc.net/problem/10845 문제정수를 저장하는 큐를 구현한 다음, 입력으로 주어지는 명령을 처리하는 프로그램을 작성하시오.명령은 총 여섯 가지이다.push X: 정수 X를 큐에 넣는 연산이다.pop: 큐에서 가장 앞에 있는 정수를 빼고, 그 수를 출력한다. 만약 큐에 들어있는 정수가 없는 경우에는 -1을 출력한다.size: 큐에 들어있는 정수의 개수를 출력한다.empty: 큐가 비어있으면 1, 아니면 0을 출력한다.front: 큐의 가장 앞에 있는 정수를 출력한다. 만약 큐에 들어있는 정수가 없는 경우에는 -1을 출력한다.back: 큐의 가장 뒤에 있는 정수를 출력한다. 만약 큐에 들어있는 정수가 없는 경우에는 -1을 출력한다.입력첫째 줄에 주어지는 명령의 수 N..
[백준25501/Python] 재귀의 귀재 https://www.acmicpc.net/problem/25501문제정휘는 후배들이 재귀 함수를 잘 다루는 재귀의 귀재인지 알아보기 위해 재귀 함수와 관련된 문제를 출제하기로 했다.팰린드롬이란, 앞에서부터 읽었을 때와 뒤에서부터 읽었을 때가 같은 문자열을 말한다. 팰린드롬의 예시로 AAA, ABBA, ABABA 등이 있고, 팰린드롬이 아닌 문자열의 예시로 ABCA, PALINDROME 등이 있다.어떤 문자열이 팰린드롬인지 판별하는 문제는 재귀 함수를 이용해 쉽게 해결할 수 있다. 아래 코드의 isPalindrome 함수는 주어진 문자열이 팰린드롬이면 1, 팰린드롬이 아니면 0을 반환하는 함수다.#include #include int recursion(const char *s, int l, int r){..
[백준2440/Python] 별찍기 - 3 https://www.acmicpc.net/problem/2440 문제첫째 줄에는 별 N개, 둘째 줄에는 별 N-1개, ..., N번째 줄에는 별 1개를 찍는 문제입력첫째 줄에 N(1 ≤ N ≤ 100)이 주어진다.출력첫째 줄부터 N번째 줄까지 차례대로 별을 출력한다.예제 입력 1 복사5예제 출력 1 복사***************풀이 n부터 n - i씩 줄여가기코드 n = int(input())for i in range(n): print("*" * (n - i))--print("*" * n - i)  이렇게  괄호 없이 - i 연산을 하려 하면, 문자열에서 숫자를 뺄 수 없기 때문에 오류가 발생하므로 주의!
[백준17478/Python] 재귀함수가 뭔가요? https://www.acmicpc.net/problem/17478 문제평소에 질문을 잘 받아주기로 유명한 중앙대학교의 JH 교수님은 학생들로부터 재귀함수가 무엇인지에 대하여 많은 질문을 받아왔다.매번 질문을 잘 받아주셨던 JH 교수님이지만 그는 중앙대학교가 자신과 맞는가에 대한 고민을 항상 해왔다.중앙대학교와 자신의 길이 맞지 않다고 생각한 JH 교수님은 결국 중앙대학교를 떠나기로 결정하였다.떠나기 전까지도 제자들을 생각하셨던 JH 교수님은 재귀함수가 무엇인지 물어보는 학생들을 위한 작은 선물로 자동 응답 챗봇을 준비하기로 했다.JH 교수님이 만들 챗봇의 응답을 출력하는 프로그램을 만들어보자.입력교수님이 출력을 원하는 재귀 횟수 N(1 ≤ N ≤ 50)이 주어진다.출력출력 예시를 보고 재귀 횟수에 따른..
[백준10828/Python] 스택 https://www.acmicpc.net/problem/10828 문제정수를 저장하는 스택을 구현한 다음, 입력으로 주어지는 명령을 처리하는 프로그램을 작성하시오.명령은 총 다섯 가지이다.push X: 정수 X를 스택에 넣는 연산이다.pop: 스택에서 가장 위에 있는 정수를 빼고, 그 수를 출력한다. 만약 스택에 들어있는 정수가 없는 경우에는 -1을 출력한다.size: 스택에 들어있는 정수의 개수를 출력한다.empty: 스택이 비어있으면 1, 아니면 0을 출력한다.top: 스택의 가장 위에 있는 정수를 출력한다. 만약 스택에 들어있는 정수가 없는 경우에는 -1을 출력한다.입력첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. ..
썸네일 [백준17608/Python] 막대기 https://www.acmicpc.net/problem/17608  문제아래 그림처럼 높이만 다르고 (같은 높이의 막대기가 있을 수 있음) 모양이 같은 막대기를 일렬로 세운 후, 왼쪽부터 차례로 번호를 붙인다. 각 막대기의 높이는 그림에서 보인 것처럼 순서대로 6, 9, 7, 6, 4, 6 이다. 일렬로 세워진 막대기를 오른쪽에서 보면 보이는 막대기가 있고 보이지 않는 막대기가 있다. 즉, 지금 보이는 막대기보다 뒤에 있고 높이가 높은 것이 보이게 된다. 예를 들어, 그림과 같은 경우엔 3개(6번, 3번, 2번)의 막대기가 보인다.N개의 막대기에 대한 높이 정보가 주어질 때, 오른쪽에서 보아서 몇 개가 보이는지를 알아내는 프로그램을 작성하려고 한다.입력첫 번째 줄에는 막대기의 개수를 나타내는 정수 N ..
[백준10773/Python] 제로 https://www.acmicpc.net/problem/10773 문제나코더 기장 재민이는 동아리 회식을 준비하기 위해서 장부를 관리하는 중이다.재현이는 재민이를 도와서 돈을 관리하는 중인데, 애석하게도 항상 정신없는 재현이는 돈을 실수로 잘못 부르는 사고를 치기 일쑤였다.재현이는 잘못된 수를 부를 때마다 0을 외쳐서, 가장 최근에 재민이가 쓴 수를 지우게 시킨다.재민이는 이렇게 모든 수를 받아 적은 후 그 수의 합을 알고 싶어 한다. 재민이를 도와주자!입력첫 번째 줄에 정수 K가 주어진다. (1 ≤ K ≤ 100,000)이후 K개의 줄에 정수가 1개씩 주어진다. 정수는 0에서 1,000,000 사이의 값을 가지며, 정수가 "0" 일 경우에는 가장 최근에 쓴 수를 지우고, 아닐 경우 해당 수를 쓴다.정..
[백준12605/Python] 단어순서 뒤집기 https://www.acmicpc.net/problem/12605 문제스페이스로 띄어쓰기 된 단어들의 리스트가 주어질때, 단어들을 반대 순서로 뒤집어라. 각 라인은 w개의 영단어로 이루어져 있으며, 총 L개의 알파벳을 가진다. 각 행은 알파벳과 스페이스로만 이루어져 있다. 단어 사이에는 하나의 스페이스만 들어간다.입력첫 행은 N이며, 전체 케이스의 개수이다.N개의 케이스들이 이어지는데, 각 케이스는 스페이스로 띄어진 단어들이다. 스페이스는 라인의 처음과 끝에는 나타나지 않는다. N과 L은 다음 범위를 가진다.N = 51 ≤ L ≤ 25출력각 케이스에 대해서, 케이스 번호가 x일때  "Case #x: " 를 출력한 후 그 후에 이어서 단어들을 반대 순서로 출력한다.예제 입력 1 복사3this is a t..
' '.join(...) - 뒤집힌 단어 리스트를 공백을 넣어 하나의 문자열로 결합  ['test', 'a', 'is', 'this']' '.join(...) 결합하면: "test a is this"join 사용 안한 코드입력n = int(input())case = [input(). split(' ') for _ in range (n)]for i in range (n) : top = case[i][::-1] print(f"Case # {i+1}: {top}")출력Case # 1: ['test', 'a', 'is', 'this']Case # 2: ['foobar']Case # 3: ['base', 'you', 'all']  join 사용 코드입력n = int(input())case = [input(). split(' '..
stack 간단 정리 # 빈 스택(리스트 초기화)stack = []stack# 스택에 원소 추가stack = [1, 2, 3]stack.append(4)stack# 스택에서 원소 제거(가장 마지막 원소 제거)stack = [1, 2, 3]top = stack.pop()print(top)stack# 스택의 top 가져오기 (제거 X, 가져오기만)stack = [1, 2, 3]top = stack[-1]top