Python 썸네일형 리스트형 Python에서 stack 사용하기. 파이썬에서 스택을 사용해보자. 스택은 결국 1차원의 배열로 대체될 수 있다. 따라서 파이썬에서는 list로 stack을 대체하자. 1. init my_stack = [] # 빈 리스트를 선언. 이것을 스택으로 사용. 2. push my_stack.append(element) # element를 스택에 쌓는다. # append가 원래 맨 뒤에 넣는 거라서 push와 원리가 같다. 3. pop top = my_stack.pop() # .pop() 함수를 사용한다. 맨 뒤에 있는 원소 하나가 삭제되고, 지금은 top 변수에 입력까지 했다. 4. top top = my_stack[-1] # top이라는 변수에 맨 뒤의 변수를 입력한다. # 이때 my_stack의 변수가 삭제되지는 않는다. 더보기 [Python] 백준 15649 DFS와 Backtracking 문제 자연수 N과 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오. 1부터 N까지 자연수 중에서 중복 없이 M개를 고른 수열 입력 첫째 줄에 자연수 N과 M이 주어진다. (1 ≤ M ≤ N ≤ 8) 출력 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해야 한다. 아이디어 1. DFS를 구현한다. 2. 한 세대의 각 노드들을 탐색했는지의 여부를 저장하는 boolean list를 만들어 사용한다. 코드 import sys N, M = map(int, sys.stdin.readline().split()) # visted[] 더보기 [Python] 백준 10814 나이와 가입 순서로, 2가지 기준으로 정렬 문제 온라인 저지에 가입한 사람들의 나이와 이름이 가입한 순서대로 주어진다. 이때, 회원들을 나이가 증가하는 순으로, 나이가 같으면 먼저 가입한 사람이 앞에 오는 순서로 정렬하는 프로그램을 작성하시오. 입력 첫째 줄에 온라인 저지 회원의 수 N이 주어진다. (1 ≤ N ≤ 100,000) 둘째 줄부터 N개의 줄에는 각 회원의 나이와 이름이 공백으로 구분되어 주어진다. 나이는 1보다 크거나 같으며, 200보다 작거나 같은 정수이고, 이름은 알파벳 대소문자로 이루어져 있고, 길이가 100보다 작거나 같은 문자열이다. 입력은 가입한 순서로 주어진다. 출력 첫째 줄부터 총 N개의 줄에 걸쳐 온라인 저지 회원을 나이 순, 나이가 같으면 가입한 순으로 한 줄에 한 명씩 나이와 이름을 공백으로 구분해 출력한다. 아이.. 더보기 [Python] 백준 1181 단어 길이와 사전식 정렬 문제 알파벳 소문자로 이루어진 N개의 단어가 들어오면 아래와 같은 조건에 따라 정렬하는 프로그램을 작성하시오. 길이가 짧은 것부터 길이가 같으면 사전 순으로 입력 첫째 줄에 단어의 개수 N이 주어진다. (1 ≤ N ≤ 20,000) 둘째 줄부터 N개의 줄에 걸쳐 알파벳 소문자로 이루어진 단어가 한 줄에 하나씩 주어진다. 주어지는 문자열의 길이는 50을 넘지 않는다. 출력 조건에 따라 정렬하여 단어들을 출력한다. 단, 같은 단어가 여러 번 입력된 경우에는 한 번씩만 출력한다. 아이디어 1. 입력받은 단어들의 중복을 제거하기 위해 Counter로 만들었다가 list로 변환한다. ['no', 'more', 'but', ... ] 2. 유니크한 단어들이 있는 list의 각 요소의 길이(단어의 글자수)를 세고 d.. 더보기 [Python] 백준 11650 정렬 문제 2차원 평면 위의 점 N개가 주어진다. 좌표를 x좌표가 증가하는 순으로, x좌표가 같으면 y좌표가 증가하는 순서로 정렬한 다음 출력하는 프로그램을 작성하시오. 입력 첫째 줄에 점의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개의 줄에는 i번점의 위치 xi와 yi가 주어진다. (-100,000 ≤ xi, yi ≤ 100,000) 좌표는 항상 정수이고, 위치가 같은 두 점은 없다. 출력 첫째 줄부터 N개의 줄에 점을 정렬한 결과를 출력한다. 코드 import sys n = int(sys.stdin.readline()) points = [] for i in range(n): point = sys.stdin.readline() points.append(list(map(int, po.. 더보기 [Python] 백준 1427 내림차순으로 정렬 문제 배열을 정렬하는 것은 쉽다. 수가 주어지면, 그 수의 각 자리수를 내림차순으로 정렬해보자. 입력 첫째 줄에 정렬하고자하는 수 N이 주어진다. N은 1,000,000,000보다 작거나 같은 자연수이다. 출력 첫째 줄에 자리수를 내림차순으로 정렬한 수를 출력한다. 아이디어 sort 메소드의 인자 중에 reverse = True를 입력하여 sort하면 내림차순으로 정렬되는 것을 이용하자. 코드 import sys n_str = (sys.stdin.readline()) n_list = list(n_str) n_list.sort(reverse=True) result_str = int(''.join(n_list)) print(result_str) 새로 배운 것: join 메소드 join 메소드는 임의의 수의 .. 더보기 [Python] 백준 2108 '통계학' 문제 수를 처리하는 것은 통계학에서 상당히 중요한 일이다. 통계학에서 N개의 수를 대표하는 기본 통계값에는 다음과 같은 것들이 있다. 단, N은 홀수라고 가정하자. 산술평균 : N개의 수들의 합을 N으로 나눈 값 중앙값 : N개의 수들을 증가하는 순서로 나열했을 경우 그 중앙에 위치하는 값 최빈값 : N개의 수들 중 가장 많이 나타나는 값 범위 : N개의 수들 중 최댓값과 최솟값의 차이 N개의 수가 주어졌을 때, 네 가지 기본 통계값을 구하는 프로그램을 작성하시오. 입력 첫째 줄에 수의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 그 다음 N개의 줄에는 정수들이 주어진다. 입력되는 정수의 절댓값은 4,000을 넘지 않는다. 출력 첫째 줄에는 산술평균을 출력한다. 소수점 이하 첫째 자리에서 반올림한.. 더보기 이전 1 다음