Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
Tags
- 소프티어
- aws
- MVVM
- 플러터
- VSCode
- 파이썬
- java
- programers
- 개발
- 스위프트
- 프로그래머스
- 머신러닝
- 다트
- 백준
- DART
- 코테
- 안드로이드
- 자바
- GDSC
- 코틀린
- softeer
- SWIFT
- 아마존 웹 서비스
- Flutter
- 알고리즘
- Python
- Android
- baekjoon
- kotlin
- 현대sw
Archives
- Today
- Total
조준장 개발자 생존기
[baekjoon] 백준 2257번(파이썬): 화학식량 본문
문제
2257번: 화학식량
첫째 줄에 화학식이 주어진다. 화학식은 H, C, O, (, ), 2, 3, 4, 5, 6, 7, 8, 9만으로 이루어진 문자열이며, 그 길이는 100을 넘지 않는다.
www.acmicpc.net
알고리즘
- 반복문을 통해 문자를 확인한다.
- 문자가 "("라면 stack에 추가한다.
- 문자가 ")"라면 while문과 .pop()을 통해 stack의 괄호 안에 있는 수를 모두 더하여 stack에 추가한다.
- 문자가 원자라면 stack 수를 추가한다.
- 문자가 괄호도 아니고 원자도 아니라면 숫자이므로 stack에 마지막 숫자를 입력받은 숫자로 곱한다.
- 위 4가지 조건을 통해 반복하여 stack에 값을 추가해준 뒤 stack을 모두 더하여 출력한다.
코드
import sys
word = list(map(str, sys.stdin.readline().strip()))
temp = {"H": 1, "C": 12, "O": 16}
stack = []
# 반복문을 통해 문자를 확인
for i in word:
if i == "(":
stack.append(i)
elif i == ")":
check = 0
# 반복문을 통해 괄호 안에 있는 수를 더하여 stack에 추가
while True:
target = stack.pop()
if target == "(":
break
check += target
stack.append(check)
# 문자가 원자라면 stack에 원자량을 추가
elif i in temp:
stack.append(temp[i])
# 입력받은 문자가 괄호도 아니고 원자도 아니면 숫자이므로
# stack에 마지막 숫자를 입력받은 문자로 곱해준다.
else:
stack[-1] *= int(i)
print(sum(stack))
github
GitHub - junjange/CodingTest: 내가 푼 코딩 테스트 문제와 해결법
내가 푼 코딩 테스트 문제와 해결법. Contribute to junjange/CodingTest development by creating an account on GitHub.
github.com
'CodingTest > Baekjoon' 카테고리의 다른 글
[baekjoon] 백준 19583번(파이썬): 싸이버개강총회 (0) | 2022.05.19 |
---|---|
[baekjoon] 백준 3107번(파이썬): IPv6 (0) | 2022.05.18 |
[baekjoon] 백준 15927번(파이썬): 회문은 회문아니야!! (0) | 2022.05.16 |
[baekjoon] 백준 12919번(파이썬): A와 B 2 (0) | 2022.05.15 |
[baekjoon] 백준 2800번(파이썬): 괄호 제거 (0) | 2022.05.14 |