전체 글 166

[baekjoon] 백준 15829번 : Hashing (by python 파이썬)

https://www.acmicpc.net/problem/15829 15829번: Hashing APC에 온 것을 환영한다. 만약 여러분이 학교에서 자료구조를 수강했다면 해시 함수에 대해 배웠을 것이다. 해시 함수란 임의의 길이의 입력을 받아서 고정된 길이의 출력을 내보내는 함수로 정 www.acmicpc.net 정답 code import sys L = int(sys.stdin.readline()) s = sys.stdin.readline() sum = 0 for i in range(L): sum += ((ord(s[i])-96)*(31**i)) print(sum % 1234567891) solution 이번문제에서 막혔던 부분은 문제가 장황한것이였는데 막상 식만 보면 풀 수 있었다. H=∑i=0 l−1..

[baekjoon] 백준 10773번 : 제로 (by python 파이썬)

https://www.acmicpc.net/problem/10773 10773번: 제로 첫 번째 줄에 정수 K가 주어진다. (1 ≤ K ≤ 100,000) 이후 K개의 줄에 정수가 1개씩 주어진다. 정수는 0에서 1,000,000 사이의 값을 가지며, 정수가 "0" 일 경우에는 가장 최근에 쓴 수를 지우고, 아닐 경 www.acmicpc.net 정답 code #제로 k = int(input()) stack =[] for _ in range(k): m = int(input()) if m == 0 : stack.pop() else: stack.append(m) sum = 0 for i in stack: sum += i print(sum) solution 이번문제는 리스트의 pop을 이용해 간단히 구현 할 수..

[baekjoon] 백준 4949번 : 균형잡힌 세상 (by python 파이썬)

`https://www.acmicpc.net/problem/4949 4949번: 균형잡힌 세상 하나 또는 여러줄에 걸쳐서 문자열이 주어진다. 각 문자열은 영문 알파벳, 공백, 소괄호("( )") 대괄호("[ ]")등으로 이루어져 있으며, 길이는 100글자보다 작거나 같다. 입력의 종료조건으로 맨 마 www.acmicpc.net 정답 code while True: s = input() if s == '.': break stack = [] for i in s: if i == '(' or i == '[': stack.append(i) elif i == ']': if len(stack) !=0 and stack[-1] == '[': stack.pop() else: stack.append(i) break elif..

[baekjoon] 백준 2805번 : 나무 자르기 (by python 파이썬)

https://www.acmicpc.net/problem/2805 2805번: 나무 자르기 첫째 줄에 나무의 수 N과 상근이가 집으로 가져가려고 하는 나무의 길이 M이 주어진다. (1 ≤ N ≤ 1,000,000, 1 ≤ M ≤ 2,000,000,000) 둘째 줄에는 나무의 높이가 주어진다. 나무의 높이의 합은 항상 M보 www.acmicpc.net code #나무 자르기 import sys input = sys.stdin.readline n, m = map(int,input().split()) tree = list(map(int,input().split())) start = 1 last = max(tree) while start mid: count += (i - mid) if count >= m: st..

[baekjoon] 백준 1874번 : 스택 수열 (by python 파이썬)

https://www.acmicpc.net/problem/1874 1874번: 스택 수열 1부터 n까지에 수에 대해 차례로 [push, push, push, push, pop, pop, push, push, pop, push, push, pop, pop, pop, pop, pop] 연산을 수행하면 수열 [4, 3, 6, 8, 7, 5, 2, 1]을 얻을 수 있다. www.acmicpc.net code n = int(input()) count = 0 #스택에 쌓을 변수 stack = [] #스택 역활 result = [] #출력할 내용 저장 message = True #연산 불가능 판단 for i in range(n): x = int(input()) while count < x: #만약 입력수보다 스택에 ..

[baekjoon] 백준 1966번 : 프린터 큐 (by python 파이썬)

https://www.acmicpc.net/problem/1966 1966번: 프린터 큐 여러분도 알다시피 여러분의 프린터 기기는 여러분이 인쇄하고자 하는 문서를 인쇄 명령을 받은 ‘순서대로’, 즉 먼저 요청된 것을 먼저 인쇄한다. 여러 개의 문서가 쌓인다면 Queue 자료구조에 www.acmicpc.net code #프린터 큐 from collections import deque t = int(input()) for _ in range(t): n, m = map(int,input().split()) imp = deque(map(int, input().split())) idx = deque(range(n)) idx[m] = 'target' order = 0 while True: if imp[0] == m..

[baekjoon]백준 1654번 : 랜선 자르기 (by python 파이썬) 이분탐색

https://www.acmicpc.net/problem/1654 1654번: 랜선 자르기 첫째 줄에는 오영식이 이미 가지고 있는 랜선의 개수 K, 그리고 필요한 랜선의 개수 N이 입력된다. K는 1이상 10,000이하의 정수이고, N은 1이상 1,000,000이하의 정수이다. 그리고 항상 K ≦ N 이다. 그 www.acmicpc.net code import sys input = sys.stdin.readline k, n = map(int,input().split()) l = [] for i in range(k): lan = int(input()) l.append(lan) start, end = 1, max(l) while start = n: start = mid + 1 else: end = mid -..

[baekjoon]백준 11866번 : 요세푸스 문제 0 (by python 파이썬)

https://www.acmicpc.net/problem/11866 11866번: 요세푸스 문제 0 첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 1,000) www.acmicpc.net code from collections import deque n, k = map(int,input().split()) deq = deque() for i in range(1,n+1): deq.append(i) print('') 이번문제는 처음에는 큐로 해결할 생각을 하지 못하고 리스트로 해결했었다. 오답 코드는 아래와 같다. import sys input = sys.stdin.readline n, k = map(int,input().split()) x = k a = [i for ..

[baekjoon] 백준 10866번 : 덱 (deque)

https://www.acmicpc.net/problem/10866 10866번: 덱 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 www.acmicpc.net code #덱 import sys input = sys.stdin.readline from collections import deque a = [] deq = deque(a) n = int(input()) for _ in range(n): c = input().split() if c[0] == 'push_front': deq.appendleft(c[1]) elif c[0] == '..

[baekjoon] 10828번 : 스택 (by python 파이썬)

https://www.acmicpc.net/problem/10828 10828번: 스택 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 www.acmicpc.net code import sys input = sys.stdin.readline n = int(input()) a = [] for _ in range(n): do = input().split() if do[0] == 'push': a.append(do[1]) elif do[0] == 'pop': if len(a) == 0: print(-1) else: print(a.pop()) el..