본문 바로가기
Problem Solving/BOJ

[BOJ][Python]17202번 풀이

by NoiB 2022. 5. 23.
반응형

이 문제는 dp로 분류되어 있기는 한데 저는 dp로는 어떻게 푸는지 감이 안왔습니다.

https://www.acmicpc.net/problem/17202

 

17202번: 핸드폰 번호 궁합

어린시절 다들 한 번씩은 이름으로 궁합을 본 적이 있을 것이다. 이것과 비슷한 방식으로 중앙대학교에는 핸드폰 번호 궁합을 보는 것이 유행이라고 한다. 핸드폰 번호 궁합을 보기 위해서는

www.acmicpc.net

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