알고리즘 문제풀이
10773번
# 재민이는 돈을 실수로 잘못 부르는 사고를 침
# 재현이는 재민이가 잘못된 수를 부를 때 0 을 외쳐 재민이가 가장 최근에 재민이가 쓴 수를 지우게함 (pop)
# 재민이는 이렇게 모든 수를 받아 적은 후 그 수의 합을 알고싶어함 sum([])
n = int(input()) # 재민이가 부를 수
n_list = [] # 재민이가 부른 수의 저장소
for i in range(n):
true_n = int(input()) # 재민이가 부른 수
if true_n == 0:
n_list.pop() # 0을 외치면 가장 최근에 재민이가 쓴 수를 지움
else:
n_list.append(true_n) # 0을 외치지 않았다면 저장소에 추가해줌
print(sum(n_list))
10828번
import sys
n = int(sys.stdin.readline())
stack = []
for i in range(n):
order = sys.stdin.readline().split()
if order[0] == 'push':
stack.append(order[1])
elif order[0] == 'pop':
if len(stack) == 0:
print(-1)
else:
print(stack.pop())
elif order[0] == 'size':
print(len(stack))
elif order[0] == 'empty':
if len(stack) == 0:
print(1)
else:
print(0)
elif order[0] == 'top':
if len(stack) == 0:
print(-1)
else:
print(stack[-1])
1929번
# isPrime 이라는 함수를 통해 소수를 구한다.
def isPrime(num):
if num == 1:
return False
else:
for i in range(2, int(num ** 0.5) + 1):
if num % i == 0:
return False
return True
m, n = map(int, input().split())
# m 부터 n+1까지 i에 넣어주고 만약 i 가 소수라면 i를 출력한다.
for i in range(m, n+1):
if isPrime(i):
print(i)
1934번
# 유클리드 호제법을 사용하자
# a를 b로 나눈 나머지를 r 이라 했을 때 a와 b의 최대 공약수는 b와 r의 최대공약수
# 최소 공배수 : gcd * a를 gcd 에 나눴을 때의 몫 * b를 gcd 에 나눴을 때의 몫
def gcd(a, b): # 최대 공약수 재귀 함수 구현
return gcd(b % a, a) if b % a else a
def lcm(a, b): # 최소 공배수
c = gcd(a, b)
return c * (a // c) * (b // c)
n = int(input())
for i in range(n):
left, right = map(int, input().split())
print(lcm(left, right))
9012번
# 괄호를 문자열로 입력받아 한쌍의 괄호로 이루어지면 YES 를 출력 아니면 NO
n = int(input())
for i in range(n):
s = input()
s_list = list(s) # 두번째 줄에 입력되는 input 을 리스트형태로 형변환
s_sum = 0
for i in s_list:
if i == '(':
s_sum += 1 # ( 괄호가 나오면 s_sum 에 1을 더해준다.
elif i == ')':
s_sum -= 1 # ) 괄호가 나오면 s_sum 에 1을 빼준다.
if s_sum < 0: # 만약 s_sum 이 -1이 되면 No 를 출력하고 for 문을 빠져나온다.
print('NO')
break
if s_sum > 0: # s_sum 이 0보다 크다면 NO를 출력
print('NO')
elif s_sum == 0: # s_sum 이 0이라면 YES 를 출력
print('YES')
오늘 알고리즘 문제를 풀면서 너무 어려운 것이 많았다!
코드를 해석하는 식으로 접근을 했고 확실히 알고리즘 공부 초기보다 이해가 빨랐던 것 같다!
확실히 알고리즘은 풀면 풀수록 뭔가 실력이 느는 것 같아 기분이 좋지만
아직 갈길이 멀기에 정말 열심히 해야겠다는 생각이 들었다!
알고리즘 공부는 어렵지만 확실히 무언가 문제가 풀릴 때 쾌감이 있는 것 같다!
앞으로도 열심히 공부해야겠다! 파이팅👍👍👍✍️✍️✍️
'알고리즘' 카테고리의 다른 글
TIL] 알고리즘 공부 (0) | 2021.06.24 |
---|---|
TIL]알고리즘공부법 (0) | 2021.06.20 |
TIL] 알고리즘 문제풀이[백준] (8958번, 2908번, 2455번, 1546번, 1157번) (0) | 2021.06.20 |
TIL] 알고리즘 문제풀이[백준] (1152번, 1157번) (0) | 2021.06.19 |
TIL] 알고리즘 기초 (0) | 2021.06.18 |