알고리즘/baekjoon

baekjoon(1120-문자열)_ python

ash silver 2022. 5. 22. 11:02

1) 문제

 

2) 예시

 

 

3) 제출

import sys
input = sys.stdin.readline

a,b = input().split()
listA, listB = list(a), list(b)
minimum = len(listA)

for k in range(0, len(listB)-len(listA)+1):
    tmp = len(listA)
    # listA 첫 부분부터 일치하는지 확인
    for i in range(0, len(listA)):
        if listA[i] == listB[i+k]:
            tmp -= 1
    minimum = min(minimum, tmp)

print(minimum)

4) 메모리/시간/코드길이

5) PLUS

(처음 제출한 코드)

import sys
input = sys.stdin.readline

a,b = input().split()
listA, listB = list(a), list(b)
minimum = len(listA)

# 두 문자열의 길이가 같을 경우
if len(listA) == len(listB):
    for i in range(0, len(listA)):
        if listA[i] == listB[i]:
            minimum -= 1
# 두 문자열의 길이가 다를 경우
else:
# listB의 어디서부터 시작할지 위치 선정
    for k in range(0, len(listB)-len(listA)+1):
        tmp = len(listA)
        # listA 첫 부분부터 일치하는지 확인
        for i in range(0, len(listA)):
            if listA[i] == listB[i+k]:
                tmp -= 1
        minimum = min(minimum, tmp)

print(minimum)

=> 하면서도 조건문 안에 반복문 안에 반복문 안에 조건문이라 이상하다고 생각은 했다,,

문자열 길이가 다를 경우에 어떻게 구현해야할지 감이 안 잡혀서 같을 경우 먼저 구현하고 다를 경우 구현하다보니 

이렇게 되었다,, 

성공한 다른 사람들 코드를 보니 가장 바깥에 있는 조건문은 쓰지 않아도 된 다는 것을 알았다,,

그러면 제출한 코드와 같이 조건문 하나가 없어져서 조금 더 간결해질 수 있다. 

 

문자열은 리스트로 따로 만들지 않아도 각 문자에 접근할 수 있다!!

 

sen = input()		#hello
print(sen[0])		#h

이제 백준에 있는 다른 사람들 코드랑 거의 비슷하다.

그냥 반복문을 잘 사용할 줄 아는지 판단하는 문제같다.