문제 바로가기
SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
나의 코드 및 설명
t = int(input())
for test_case in range(1, t+1):
string = list(input())
cnt = 0
for i in range(len(string)-1):
if string[i] + string[i+1] == "(|":
cnt += 1
if string[i] + string[i+1] == "|)":
cnt += 1
if string[i] + string[i+1] == "()":
cnt += 1
print("#{} {}".format(test_case, cnt))
다른 코드 및 설명
t = int(input())
for test_case in range(1, t+1):
string = list(input())
cnt = 0
i = 0
while i < len(string):
if string[i] == "(": #열린 괄호를 만났을 때,
if string[i+1] == ")": #다음 문자가 닫힌 괄호라면,
cnt += 1
i+=1 #다음 문자는 확인할 필요가 없으므로 인덱스를 추가적으로 증가
elif string[i+1] == "|":
cnt +=1
elif string[i] == ")":
cnt+=1
i+=1 #인덱스는 기본적으로 1 만큼 항상 증가 "()" 일 경우엔 한 번 반복에 인덱스 2 증가
print("#{} {}".format(test_case, cnt))
피드백
문제 풀이에는 성공했으나, 더 복잡한 문제가 나올 시에 내가 푼 방식대로 풀게 되면 코드가 너무 지저분하게 될 것 같아서 다른 코드도 찾아보았다. 반복문으로 while문을 사용했고, 한 번 반복시 디폴트로 문자열의 인덱스를 1만큼 증가시키고, 만약 연속된 문자열이 "()"와 같은 꼴이라면, 문자열의 인덱스를 추가로 1만큼 더 증가시켜준다.( 안해줄 시엔 ")"에서 한 번 더 카운트 되기 때문 )
다른 코드를 이해해본 덕에 앞으로 비슷한 유형의 복잡한 문제를 만났을 때, 특정 조건 시 인덱스를 추가적으로 증가시키는 방법을 활용한다면 문제 해결에 많은 도움이 될 것 같다.
'SWEA (SW Expert Academy) > D3' 카테고리의 다른 글
[SWEA/D3] 7510 상원이의 연속 합 (0) | 2023.05.10 |
---|---|
[SWEA/D3] 14413 격자판 칠하기 / for문을 한 번만 사용하는 연습이 필요하다.. (0) | 2023.05.09 |
[SWEA/D3] 16800 구구단 걷기 (0) | 2023.05.09 |
[SWEA/D3] 16910 원 안의 점 (0) | 2023.05.09 |
[SWEA/D3] 6808 규영이와 인영이의 카드게임 / 백트래킹 (0) | 2023.05.08 |