728x90
반응형
1. 문제 설명
2. 풀이과정
- sys.stdin.readline() 함수를 사용하기 위해 제일 위에 sys 라이브러리를 불러온다. import sys
- 전체 테스트 케이스 횟수를 입력받는다. T = int(sys.stdin.readline())
- 테스트 케이스 횟수만큼 반복한다. 반복문의 변수가 필요 없을 땐 _를 사용할 수 있다. for _ in range(T)
- 판별할 문자열을 마지막 enter 입력을 제외하고 입력받는다. string = sys.stdin.readline().rstrip()
- 괄호를 넣어줄 공백 리스트를 생성한다. li = list()
- 결과를 저장할 변수를 생성하고 True로 초기화해 준다. result = True
- 입력받은 문자열의 문자를 하나씩 추출한다. for i in string
- 만약 추출한 원소가 여는 괄호이면 if (i == '(')
- 리스트에 추출한 요소를 추가한다. li.append(i)
- 반면에 추출한 원소가 닫는 괄호이면 else
- 우선 리스트가 비어있는지 확인한다. if (len(li) == 0)
- 만약 리스트가 비어있는데 닫는 괄호가 나온다면 올바르지 않은 문자열이다. result = False
- 올바르지 않은 문자열이기 때문에 반복문을 종료한다. break
- 리스트가 비어있지 않다면 리스트의 원소 하나를 제거한다. li.pop()
- 반복문 종료 후, 결과가 True이고 리스트 또한 공백 리스트이면 if (result and len(li) == 0)
- 올바른 문자열이다. print('YES')
- 반면에 결과가 False이거나 공백 리스트가 아니면 else
- 올바르지 않은 문자열이다. print('NO')
반응형
3. 소스코드
import sys
T = int(sys.stdin.readline())
for _ in range(T):
string = sys.stdin.readline().rstrip()
li = list()
result = True
for i in string:
if (i == '('):
li.append(i)
else:
if (len(li) == 0):
result = False
break
li.pop()
if (result and len(li) == 0):
print('YES')
else:
print('NO')
4. 다른 풀이
- sys.stdin.readline() 함수를 사용하기 위해 제일 위에 sys 라이브러리를 불러온다. import sys
- 전체 테스트 케이스 횟수를 입력받는다. T = int(sys.stdin.readline().rstrip())
- 테스트 케이스 횟수만큼 반복한다. 반복문의 변수가 필요 없을 땐 _를 사용할 수 있다. for _ in range(T)
- 판별할 문자열을 입력받는다. string = sys.stdin.readline().rstrip()
- 괄호의 개수를 저장할 변수를 생성하고 초기화해 준다. count = 0
- 입력받은 문자열의 문자를 하나씩 추출한다. for i in string
- 만약 추출한 원소가 여는 괄호이면 if (i == '(')
- 괄호의 개수를 1 증가시켜 준다. count += 1
- 반면에 추출한 원소가 닫는 괄호이면 else
- 괄호의 개수를 1 감소시켜 준다. count -= 1
- 만약 괄호의 개수가 음수가 된다면 if (count < 0)
- 올바르지 않은 문자열이므로 반복문을 종료한다. break
- 반복문 종료 후, 괄호의 개수가 0이 아니면 if (count != 0)
- 올바르지 않은 문자열이다. print('NO')
- 반면에 괄호의 개수가 0이면 else
- 올바른 문자열이다. print('YES')
import sys
T = int(sys.stdin.readline().rstrip())
for _ in range(T):
string = sys.stdin.readline().rstrip()
count = 0
for i in string:
if (i == '('):
count += 1
else:
count -= 1
if (count < 0):
break
if (count != 0):
print('NO')
else:
print('YES')
728x90
반응형
'백준' 카테고리의 다른 글
[백준] 1463번 : 1로 만들기 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.07.03 |
---|---|
[백준] 5622번 : 다이얼 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.07.03 |
[백준] 10828번 : 스택 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.07.02 |
[백준] 1316번 : 그룹 단어 체커 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.07.02 |
[백준] 2292번 : 벌집 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.07.02 |
[백준] 15596번 : 정수 N개의 합 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.07.02 |
[백준] 1978번 : 소수 찾기 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.07.01 |
[백준] 1065번 : 한수 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.07.01 |