1. DFS와 BFS (백준 1260번)
1260번: DFS와 BFS
첫째 줄에 정점의 개수 N(1 ≤ N ≤ 1,000), 간선의 개수 M(1 ≤ M ≤ 10,000), 탐색을 시작할 정점의 번호 V가 주어진다. 다음 M개의 줄에는 간선이 연결하는 두 정점의 번호가 주어진다. 어떤 두 정점 사
www.acmicpc.net
2. 스택 (백준 10828번)
10828번: 스택
첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지
www.acmicpc.net
직접 작성한 코드)
n=int(input())
stack=[]
for i in range(n):
a=input()
if a.split()[0]=='push':
stack.append(a.split()[1])
elif a=='top':
if not stack:
print(-1)
else:
print(stack[-1])
elif a=='size':
print(len(stack))
elif a=='pop':
if not stack:
print(-1)
else:
print(stack[-1])
stack.pop()
elif a=='empty':
if not stack:
print(1)
else:
print(0)
3. 큐 (백준 10845 번)
10845번: 큐
첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지
www.acmicpc.net
직접 작성한 코드)
from collections import deque
n=int(input())
queue=deque()
for i in range(n):
a=input()
if a.split()[0]=='push':
queue.append(a.split()[1])
elif a=='size':
print(len(queue))
elif a=='pop':
if not queue:
print(-1)
else:
queue.popleft()
elif a=='empty':
if not queue:
print(1)
else:
print(0)
elif a=='front':
if not queue:
print(-1)
else:
print(queue[0])
elif a=='back':
if not queue:
print(-1)
else:
print(queue[-1])
4. 피보나치 수 5 (백준 10870번)
10870번: 피보나치 수 5
피보나치 수는 0과 1로 시작한다. 0번째 피보나치 수는 0이고, 1번째 피보나치 수는 1이다. 그 다음 2번째 부터는 바로 앞 두 피보나치 수의 합이 된다. 이를 식으로 써보면 Fn = Fn-1 + Fn-2 (n ≥ 2)가
www.acmicpc.net
직접 작성한 코드)
n=int(input())
array=[]
array.append(0)
array.append(1)
for i in range(n+1):
if i==0 or i==1 :
continue
array.append(array[i-1]+array[i-2])
print(array[n])
5. 균형잡힌 세상 (백준 4949번)
4949번: 균형잡힌 세상
하나 또는 여러줄에 걸쳐서 문자열이 주어진다. 각 문자열은 영문 알파벳, 공백, 소괄호("( )") 대괄호("[ ]")등으로 이루어져 있으며, 길이는 100글자보다 작거나 같다. 각 줄은 마침표(".")로 끝난다
www.acmicpc.net
직접 작성한 코드)
from collections import deque
import math
while True:
array=[]
a=list(input())
dq=deque()
result='yes'
if a[0]=='.' and len(a)==1:
break
for i in a:
if i=='[' or i== '(':
dq.append(i)
elif i==']':
if len(dq)==0:
result='no'
break
st=dq.pop()
if st!='[':
result='no'
break
elif i==')':
if len(dq)==0:
result='no'
break
st=dq.pop()
if st!='(':
result='no'
break
if (len(dq)!=0):
result='no'
print(result)
'CS Study > algorithm' 카테고리의 다른 글
이진 탐색 문제풀이 (0) | 2022.07.30 |
---|---|
기타 문제풀이 (0) | 2022.07.22 |
정렬 알고리즘 (문제 풀이) (0) | 2022.07.14 |
그리디 알고리즘 (문제 풀이) (0) | 2022.07.12 |
최단 경로 알고리즘 (0) | 2022.07.12 |