Nerd
Nerd
Nerd
전체 방문자
오늘
어제
  • 분류 전체보기 (439)
    • Today I Learned (333)
    • 주간회고 (8)
    • FrontEnd (5)
    • ErrorNote (7)
    • 자바스크립트 (24)
    • 알고리즘 (13)
    • html과 css (21)
    • 토이프로젝트 (5)
    • React-Native (1)
    • React (13)
    • node (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 파이썬기초
  • ErrorNote
  • 자바스크립트
  • 메타인지
  • 주간회고
  • 3FS
  • 절차지향적 프로그래밍
  • 명령적 프로그래밍
  • 리액트 훅
  • wil
  • 에러노트
  • 토이프로젝트
  • npm ci
  • JSX
  • npm i
  • 토이 프로젝트
  • 코드숨
  • Today I Learned
  • TIL
  • 파이썬 기초
  • 리덕스 툴킷
  • 데이터 타입
  • 리액트
  • Redux
  • React
  • package-lcok.json
  • pacakge.json
  • 모던 자바스크립트
  • 값의 할당 및 재할당
  • 선언적 프로그래밍

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
Nerd

Nerd

알고리즘

TIL] 알고리즘 문제풀이[백준] (10773번, 10828번, 1929번, 1934번, 9012번)

2021. 6. 22. 02:37

알고리즘 문제풀이

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
    '알고리즘' 카테고리의 다른 글
    • TIL] 알고리즘 공부
    • TIL]알고리즘공부법
    • TIL] 알고리즘 문제풀이[백준] (8958번, 2908번, 2455번, 1546번, 1157번)
    • TIL] 알고리즘 문제풀이[백준] (1152번, 1157번)
    Nerd
    Nerd
    꾸준히 열심히 지속적으로 하겠습니다!

    티스토리툴바