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
- 플러터
- 개발
- 안드로이드
- 머신러닝
- 소프티어
- 파이썬
- GDSC
- 다트
- 스위프트
- programers
- java
- aws
- DART
- kotlin
- MVVM
- SWIFT
- 알고리즘
- 프로그래머스
- Android
- softeer
- 코틀린
- 현대sw
- 아마존 웹 서비스
- 자바
- 코테
- VSCode
- Python
- 백준
- baekjoon
- Flutter
Archives
- Today
- Total
조준장 개발자 생존기
[baekjoon] 백준 2800번(파이썬): 괄호 제거 본문
문제
2800번: 괄호 제거
첫째 줄에 음이 아닌 정수로 이루어진 수식이 주어진다. 이 수식은 괄호가 올바르게 쳐져있다. 숫자, '+', '*', '-', '/', '(', ')'로만 이루어져 있다. 수식의 길이는 최대 200이고, 괄호 쌍은 적어도 1개
www.acmicpc.net
알고리즘
- 반복문을 통해 괄호의 시작점과 끝점을 순서대로 저장한다.
- 저장된 괄호의 시작점과 끝점을 제거하기 위해 모든 경우의 수를 확인한다. 이때, 괄호의 개수를 늘리면서 확인한다.
- 반복문을 통해 모든 경우의 수의 괄호를 제거하고 저장한다.
- 중복 없이 저장된 것을 오름차순으로 정렬하여 출력한다.
코드
import sys
from itertools import combinations
n = list(map(str, sys.stdin.readline().strip()))
answer = set()
stack = []
temp = []
# 반복문을 통해 괄호의 시작점과 끝점을 저장
for idx, word in enumerate(n):
if word == "(":
stack.append(idx)
elif word == ")":
temp.append((stack.pop(), idx))
for i in range(1, len(temp) + 1):
c = combinations(temp, i) # combinations을 통해 모든 경우의 수를 확인
# 반복문을 통해 경우의 수를 확인
for j in c:
target = list(n)
# 괄호 제거
for k in j:
target[k[0]] = ""
target[k[1]] = ""
answer.add(''.join(target))
for ans in sorted(list(answer)):
print(ans)
github
GitHub - junjange/CodingTest: 내가 푼 코딩 테스트 문제와 해결법
내가 푼 코딩 테스트 문제와 해결법. Contribute to junjange/CodingTest development by creating an account on GitHub.
github.com
'CodingTest > Baekjoon' 카테고리의 다른 글
[baekjoon] 백준 15927번(파이썬): 회문은 회문아니야!! (0) | 2022.05.16 |
---|---|
[baekjoon] 백준 12919번(파이썬): A와 B 2 (0) | 2022.05.15 |
[baekjoon] 백준 6443번(파이썬): 애너그램 (0) | 2022.05.13 |
[baekjoon] 백준 9081번(파이썬): 단어 맞추기 (1) | 2022.05.12 |
[baekjoon] 백준 17926번(파이썬): Four Squares (1) | 2022.05.11 |