[Python] 백준 31458번 : !!초콜릿 중독 주의!!
2025. 4. 2. 19:04
99클럽 코테 스터디 | 비기너 | 3일차
처음 접근 방법
우선 처음 문제를 봤을 때 지레짐작으로 문제를 잘못 생각한 부분이 있다. 예제 입력에서 입력값이 7개인데 예제 출력에서는 6개만 입력이 되어서 '아~ '6'과 같이 0과 1이 아닌 숫자를 입력하면 아무것도 출력되지 않는구나' 라고 혼자 단단히 오해를 했다. 이 것 때문에 문제를 더 복잡하게 풀었는데, 나중에 뭔가 이상해서 다시 문제를 읽어보니.. 맨 윗줄의 입력값은 수식의 개수 T를 의미하는 것이었다.. 문제를 제대로 읽자....ㅎ.ㅎ
개선 방법
오해를 바로잡은 후, 접근했던 방식은 아래와 같다.
1. 왼쪽 느낌표의 개수, 오른쪽 느낌표의 개수를 각각 left_count, right_count로 센다
2. 가운데 숫자를 num으로 저장한다
3. is_right boolean을 두어서 숫자에서 느낌표로 전환되는 지점에서 right_count를 셀 수 있도록 한다
4. 연산에서 right_count가 우선순위이므로, 먼저 고려하되 1개 이상이면 무조건 num은 1로 변환한다
5. left_count가 홀수일 경우, 숫자 반전을 시킨다 (이 때, num = 1 - num 구문을 통해 반전하는 간편한 방식은 지피티를 통해 새로 배웠다)
def solution(input_list):
answer = []
for t in range(len(input_list)):
num = 0
left_count = 0
right_count = 0
is_right = False
for i in input_list[t]:
if is_right:
if i == "!":
right_count += 1
elif i == "!":
left_count += 1
elif i.isdigit():
num = int(i)
is_right = True
if right_count >= 1:
num = 1
if (left_count % 2) != 0:
num = 1 - num
answer.append(num)
for a in answer:
print(a)
return
T = int(input())
input_list = []
for _ in range(T):
t = input().strip()
input_list.append(t)
solution(input_list)
'코딩테스트 > BOJ' 카테고리의 다른 글
[Python] 백준 10820번 : 문자열 분석 (0) | 2025.04.01 |
---|---|
[Python] 백준 1032번 : 명령 프롬프트 (0) | 2025.03.31 |
[Python] 백준 10808번 : 알파벳 개수 (0) | 2025.03.25 |
[Python] 백준 1439번 : 뒤집기 (0) | 2025.03.25 |
[Python] 백준 1929번 : 소수 구하기 (0) | 2025.03.25 |