https://www.acmicpc.net/problem/18258 18258번: 큐 2 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 2,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 www.acmicpc.net 큐의 개념을 익히고 실습하는 문제. 연산 당 시간 복잡도가 O(1)이어야 한다는 점에 유의하세요. 나의 풀이 Queue를 구현하는 문제로 명령은 다음과 같음 push X: 정수 X를 큐에 넣는 연산이다. pop: 큐에서 가장 앞에 있는 정수를 빼고, 그 수를 출력한다. 만약 큐에 들어있는 정수가 없는 경우에는 -1을 출력한다. size: 큐에 들어있는 정수의 개수를 출력한..
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 나의 풀이 1부터 n까지 수를 스택에 넣었다가 늘어놓음으로 하나의 수열을 만들 수 있음 이를 스택을 이용해 수열을 만들 수 있는지 없는지 있다면 push(+)와 pop(-)을 어떻게 수행해야하는지 출력함 문제가 좀 이해하기 힘든데 push랑 pop을 기준으로 이해하면 됨 8 4 3 6 8 7 5 2 1 + + + +..
https://www.acmicpc.net/problem/4949 4949번: 균형잡힌 세상 각 문자열은 마지막 글자를 제외하고 영문 알파벳, 공백, 소괄호("( )"), 대괄호("[ ]")로 이루어져 있으며, 온점(".")으로 끝나고, 길이는 100글자보다 작거나 같다. 입력의 종료조건으로 맨 마지막에 www.acmicpc.net 나의 풀이 기존의 괄호 '(', ')'만 탐색하는 과정에서 썼는데 시간이 오래 걸렸던 방법을 사용했다. 괄호 1개만 확인한다면 '(' 일 때 +1, ')' 일 때 -1로 푸는 게 더 빠름 이 문제는 괄호 '()' '[]'가 제대로 있는지 그리고 서로 겹쳐있지 않는지 확인해야 함 ([)] 이 경우에는 no를 출력해야 함 풀이는 위와 같이 ')'와 ']'가 나왔을 때 짝이 맞다면..
https://www.acmicpc.net/problem/9012 9012번: 괄호 괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 ‘(’ 와 ‘)’ 만으로 구성되어 있는 문자열이다. 그 중에서 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(Valid PS, VPS)이라고 www.acmicpc.net 나의 풀이 스택을 사용하는 문제로 괄호로 구성된 문자열이 바르게 되어있다면 YES, 아니라면 NO를 출력하는 문제이다. 6 (())()) (((()())() (()())((())) ((()()(()))(((())))() ()()()()(()()())() (()((())()( NO NO YES NO YES NO 우선 괄호를 하나씩 뽑아 ')'일 때는 check에 +1을..
https://www.acmicpc.net/problem/10773 10773번: 제로 첫 번째 줄에 정수 K가 주어진다. (1 ≤ K ≤ 100,000) 이후 K개의 줄에 정수가 1개씩 주어진다. 정수는 0에서 1,000,000 사이의 값을 가지며, 정수가 "0" 일 경우에는 가장 최근에 쓴 수를 지우고, 아닐 경 www.acmicpc.net 재현이가 잘못된 수를 부를 때마다 0을 외쳐서 잘못된 수를 지우는 문제 import sys loop = int(sys.stdin.readline()) cal = list() for _ in range(loop): num = int(sys.stdin.readline()) if num == 0: cal.pop() else: cal.append(num) print(su..
https://www.acmicpc.net/problem/10828 10828번: 스택 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 www.acmicpc.net 나의 풀이 스택 구현 문제로 push X: 정수 X를 스택에 넣는 연산이다. pop: 스택에서 가장 위에 있는 정수를 빼고, 그 수를 출력한다. 만약 스택에 들어있는 정수가 없는 경우에는 -1을 출력한다. size: 스택에 들어있는 정수의 개수를 출력한다. empty: 스택이 비어있으면 1, 아니면 0을 출력한다. top: 스택의 가장 위에 있는 정수를 출력한다. 만약 스택에 들..
https://www.acmicpc.net/problem/5622 5622번: 다이얼 첫째 줄에 알파벳 대문자로 이루어진 단어가 주어진다. 단어의 길이는 2보다 크거나 같고, 15보다 작거나 같다. www.acmicpc.net 나의 풀이 주어진 문자의 다이얼을 돌릴 때 시간이 얼마나 걸리는지 구하는 문제 1의 경우 2초의 시간이 걸리고 2의 경우 3초의 시간이 걸림 num = input() dialog = dict(A=3,B=3,C=3,D=4,E=4,F=4,G=5,H=5,I=5,J=6,K=6,L=6,M=7,N=7,O=7,P=8,Q=8,R=8,S=8,T=9,U=9,V=9,W=10,X=10,Y=10,Z=10) answer = 0 for n in num: answer+= dialog[n] print(answe..
https://www.acmicpc.net/problem/2908 2908번: 상수 상근이의 동생 상수는 수학을 정말 못한다. 상수는 숫자를 읽는데 문제가 있다. 이렇게 수학을 못하는 상수를 위해서 상근이는 수의 크기를 비교하는 문제를 내주었다. 상근이는 세 자리 수 두 www.acmicpc.net 나의 풀이 range를 역순으로 사용하여 반대로 값을 구했음 num = list(map(str,input().split())) ans = ['' for _ in range(2)] for idx in range(2,-1,-1) : ans[0] += num[0][idx] ans[1] += num[1][idx] print(max(int(ans[0]), int(ans[1]))) 다른 사람의 풀이 파이썬 슬라이스를 이..