

import sys
input = sys.stdin.readline
for _ in range(int(input())):
t = input().strip()
while (t != 0 or t!= 1):
if '0!' in t:
t = t.replace('0!', '1')
continue
elif '1!' in t:
t = t.replace('1!', '1')
continue
elif '!0' in t:
t = t.replace('!0', '1')
elif '!1' in t:
t = t.replace('!1', '0')
else:
break
print(t)
입력받은 문자열을 하나씩 바꿔나가는 순으로 시도했다.
팩토리얼 먼저 계산하고 그 후에 왼쪽 !가 있는걸 바꾸도록 진행했다.
다른 분들이 푼 방식을 봤는데, 깔끔하게 보이는 코드를 가져왔다.
import sys
input = sys.stdin.readline
for _ in range(int(input())):
t = input().strip()
num = '0' if '0' in t else '1'
left = t.split(num)[0].count('!')
right = t.split(num)[1].count('!')
if right > 0:
num = '1'
if left % 2 == 1:
num = '0' if num == '1' else '1'
print(num)
어차피 정수는 1개니까 그 정수를 기준으로 나눴고,
오른쪽에 있는 느낌표는 개수에 상관없이 무조건 1이니까 오른쪽에 !가 있으면 정수를 1로 하고,
그 후에 왼쪽에 느낌표가 짝수/홀수냐에 따라 정수를 판단해주는 로직을 보고 이렇게 풀 수도 있구나 생각했다.
너무 나는 1차원적으로 생각했던 것 같다.
내일의 알고리즘 문제를 풀어보고 이해하기
#99클럽 #코딩테스트준비 #개발자취업 #항해99 #TIL