반응형
이 문제는 dp로 분류되어 있기는 한데 저는 dp로는 어떻게 푸는지 감이 안왔습니다.
https://www.acmicpc.net/problem/17202
a = input()
b = input()
t = []
for i in range(8):
t.append(a[i])
t.append(b[i])
ans = ''.join(t)
while 1:
t=[]
for i in range(len(ans)-1):
t.append(str((int(ans[i])+int(ans[i+1]))%10))
ans = ''.join(t)
if len(ans)==2:
break
print(ans)
그냥 반복문으로 풀었는데 혹시 깔끔하게 dp로 푼 풀이를 확인하신다면 댓글로 알려주시면 감사하겠습니다. dp 풀이도 보고 싶어서 좀 찾아봤었는데 다들 루프로 푼 것 밖에 확인을 못해서요.
일단 접근 자체는 문제에서 주어진대로 입력을 두 개 받아서 각각 한글자씩 번갈아가면서 저장하는 새로운 리스트를 만들어줬습니다. 그렇게 하고 반복문으로 이용하기 위해서 ans 라는 변수에 join 함수를 이용해서 t 내부의 문자열을 다시 이어줬구요(지금 와서 보니까 그냥 ans에 +로 번갈아가면서 추가했다면 과정을 하나 생략 가능하겠네요). 그 후에 t를 초기화하고 문제에서 시킨대로 반복문을 이용해서 과정을 진행해줍니다. 2글자가 되면 출력을 하는게 조건이었으니 길이가 2가 되면 반복문을 종료시켜주면 되겠습니다.
문제 자체는 어렵지 않은데 어떻게 dp로 푸는지는 감이 잘 안오네요.
반응형
'Problem Solving > BOJ' 카테고리의 다른 글
[BOJ][Python]15312번 풀이 (0) | 2022.05.24 |
---|---|
[BOJ][Python]16173번 풀이 (0) | 2022.05.23 |
[BOJ][Python]23972번 풀이 (0) | 2022.05.21 |
[BOJ][Python]2748번 풀이 (0) | 2022.05.21 |