[백준 2257] 화학식량

2021. 5. 7. 21:20·알고리즘 문제풀이

www.acmicpc.net/problem/2257

 

2257번: 화학식량

첫째 줄에 화학식이 주어진다. 화학식은 H, C, O, (, ), 2, 3, 4, 5, 6, 7, 8, 9만으로 이루어진 문자열이며, 그 길이는 100을 넘지 않는다.

www.acmicpc.net

s = input()

d = {
    "H" : 1,
    "C" : 12,
    "O" : 16
}

stack = []

for i in s:
    if i in d:
        stack.append(d[i])
    elif i == "(":
        stack.append(i)
    elif i == ")":
        temp = 0
        while True:
            p = stack.pop()

            if p == "(":
                break

            temp += p
        
        if temp == 0:
            continue
        else:
            stack.append(temp)
    else:
        n = stack.pop()
        temp = n*int(i)
        stack.append(temp)

print(sum(stack))

풀이

 

스택 자료구조에 차근차근 덧셈을 해나간다.

규칙은 아래와 같다.

 

  • 스택 구조에 하나씩 push한다.
  • 빈칸이라면 그냥 push
  • 문자라면 숫자로 변환하고 push
  • 숫자라면 스택에서 pop 한것과 숫자를 곱한후 다시 push
  • 여는 괄호라면 그냥 push
  • 닫는 괄호라면 가장 빨리 pop되는 여는괄호까지 모두 pop 한 후, pop한걸 다 더해주고 push

마지막으로 stack에 남아있는 모든 수의 총합을 구해주면 된다.

 

문제유형이 스택이라 생각됐을 경우 pop으로 꺼낸 후 특정 로직을 처리하고 다시 push하는 등의 테크닉을 잘 활용하면 좋다.

 

시간복잡도

문자의 길이가 N 이라면 O(N)만큼의 시간이 든다.

 

 

 

'알고리즘 문제풀이' 카테고리의 다른 글

[백준 17218] ⚾  (0) 2021.05.07
[백준 1013] Contact  (0) 2021.05.07
[백준 5347] LCM (최소공배수)  (0) 2021.05.07
[백준 10610] 30  (0) 2021.05.05
[2019 카카오 개발자 겨울 인턴십] 불량 사용자  (0) 2021.05.05
'알고리즘 문제풀이' 카테고리의 다른 글
  • [백준 17218] ⚾
  • [백준 1013] Contact
  • [백준 5347] LCM (최소공배수)
  • [백준 10610] 30
WildDevmon
WildDevmon
『앗! 야생의 개발몬(이)가 나타났다!』
  • WildDevmon
    야생의 개발몬
    WildDevmon
  • 전체
    오늘
    어제
    • 분류 전체보기 (35)
      • Server (5)
      • 알고리즘 문제풀이 (27)
      • 회고 (3)
  • 블로그 메뉴

    • 홈
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    백준1747
    네이티브 메모리
    direct buffer
    백준 5347
    백준 30
    백준 1034
    소수&팰린드롬
    경력 서류
    코틀린 코루틴
    우아한 종료
    합승 택시 요금
    자바 프로세스 종료
    백준14465
    백준6980
    자바 스레드 상태
    자바 물리 메모리
    백준 1004
    백준15954
    컴공 취준
    카카오 필요스펙
    2020 카카오 인턴
    preStop
    백준 고층 건물
    자바 최대공약수
    백준 1114
    소가 길을 건너간 이유 5
    통나무 자르기
    백준 어린 왕자
    백준 파티
    네카라쿠배 취업
    백준 10610
    자바 최소공배수
    ai개발자
    백준 18405
    선발 명단
    다이렉트 버퍼
    백준2262
    1114백준
    백준 경쟁적 전염
    백준 17281
    terminationGracePeriodSeconds
    커널 스레드 상태
    graceful shutdown
    백준 1027
    백준 인형들
    파이썬
    백준 1114 파이썬
    백준1238
    백준1188
    백준 램프
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
WildDevmon
[백준 2257] 화학식량
상단으로

티스토리툴바