ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 1120. [Python]문자열
    Python_알고리즘/Silver IV 2023. 4. 9. 00:39

    1. 문제

     

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

     

    1120번: 문자열

    길이가 N으로 같은 문자열 X와 Y가 있을 때, 두 문자열 X와 Y의 차이는 X[i] ≠ Y[i]인 i의 개수이다. 예를 들어, X=”jimin”, Y=”minji”이면, 둘의 차이는 4이다. 두 문자열 A와 B가 주어진다. 이때, A의

    www.acmicpc.net

     

    2. 접근 방법

     

    • 시간 제한: 2초
    • 메모리 제한: 128MB
    • 브루트포스

     

    3. 파이썬 코드

     

    word_1,word_2 = input().split()
    # 첫번째 단어와 두번째 단어의 길이가 같은지 아닌지 판단
    if len(word_1) == len(word_2):
        cnt = 0
        # 길이가 같은경우 한개의 길이를 반복문을통해서 탐색
        for i in range(len(word_1)):
            if word_1[i] != word_2[i]:
                # 다른경우 cnt 라는 변수를 +1 해줌
                cnt += 1
        # 다른 부분의 갯수를 출력
        print(cnt)
    # 단어의 길이가 다른경우
    else:
        # 첫번째 단어의 길이와 두번째 단어의 길이를 각각 변수에 저장
        word_1_length = len(word_1)
        word_2_length = len(word_2)
        # 정답 리스트에 값출력
        ans_list = []
        # 두번째 단어와 첫번째 단어의 길이차 +1 범위까지 반복분 시행
        for j in range(word_2_length-word_1_length+1):
            # cnt 변수에 0 을 저장
            cnt = 0
            # 첫번째 단어의 길이만큼 반복문 시행
            for k in range(word_1_length):
                # 첫번째 단어와 두번째단어의 시작값을 변경해가며 값을 비교
                if word_1[k] != word_2[j+k]:
                    # 다른 경우 갯수를 체크
                    cnt += 1
            # 정답 리스트에 반복문을 통한 갯수를 체크한 변수 추가
            ans_list.append(cnt)
        # 그 중 제일 작은 값의 변수를 추가
        print(min(ans_list))

     

    4. 문제를 풀고난 후 생각

     

    • 문제에서 제시한 조건으로 A의 단어의 앞이나 뒤에 문자를 추가하는 것만 조건으로 주어졌다.
    • 그리고 들어오는 인풋값들로 A의 길이가 B의 길이보다 작거나 같기 때문에 길이가 같은 경우와 작은경우를 나눠서 생각했다.
    • 길이가 같으면 문자열 한개한개 비교해가며 다른부분을 체크하면 되기 때문에 구현은 간단했다.
    • 길이가 다를 경우 A라는 문자열 전체를 가지고 B라는 문자열의 처음부터 끝까지 길이가 다른것을 확인하여 그 값들 중 제일 작은 값을 출력하면 문제에서 원하는 해답이 된다.
    • 이러한 생각을 한 이유는 A의 문자열을 가지고 앞, 뒤 부분에 문자열을 추가하는 것이 B에 있는 문자열을 추가해야 최소로 다른 값인 경우를 찾을 수 있기 때문에 A라는 문자열 자체가 B라는 문자열에서 몇개나 중복되는지를 확인해야 했다.

    • 이런 방식으로 다른 갯수를 체크하여 최소값을 출력하면 답이된다.

    5. 문제를 푸는데 도움이 되는 지식

     

    • 브루트 포스

    'Python_알고리즘 > Silver IV' 카테고리의 다른 글

    1920. [Python]수 찾기  (0) 2023.04.12
    1755. [Python]숫자놀이  (0) 2023.04.11
    1235. [Python]학생 번호  (0) 2023.04.01
    2578. [Python]빙고  (0) 2023.02.05
    10610. [Python]30  (0) 2023.01.31

    댓글

Designed by Tistory.