백준 1120. 문자열 - 문제풀이 (반복문) (Python/파이썬)

3666 단어 pythonpython

🔎 1120번. 문제 보기
https://www.acmicpc.net/problem/1120


💡 문제 풀기 전
길이가 같을 때는 바로 비교해서 출력을 하면 되지만,

길이가 다를 때는 앞뒤로 어떻게 조건을 체크해서 추가해주지? 라는 생각에 꽤 오래 고민했다. 결국 인터넷의 힘을 조금 빌렸는데 (...) 조건을 체크해서 어디로 추가할 지 고르는 것이 아니라 모든 경우의 수를 체크해서 그 중에서 차이의 최소값을 고르는 거였다!

새로운 문제 풀이 방법을 알 수 있게 되었다 :)

📋 코드 보기

from sys import stdin

A, B = stdin.readline().rstrip().split()

result = []
for i in range(len(B) - len(A) + 1):
    cnt = 0
    for j in range(len(A)):
        if A[j] != B[i + j]:
            cnt += 1
    result.append(cnt)

print(min(result))

🥕 코드 풀이 및 관련 개념

처음에 코드만 봤을 때는 '엥? 뭔소리야?'라고 잠깐 생각했는데,
오히려 예제 코드를 넣으면서 중간 과정을 하나하나 print 해보니까 바로 이해했다.

ex. koder topcoder

(koder)
(topco)der

(koder)
t(opcod)er

(koder)
to(pcode)r

(koder)
top(coder)

for문을 돌리면 이렇게 5개씩 쭉 비교를 하고,
차이가 있을 때가 count를 해서 result 리스트에 append 되는데
마지막에는 그중에서 min 값을 print 해주기 때문에
금방 나온다!

모든 경우의 수를 체크해서 최소값을 출력하기!

좋은 웹페이지 즐겨찾기