ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 2866. [Python]문자열 잘라내기
    Python_알고리즘/Gold V 2024. 8. 19. 18:17

    1. 문제

     

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

     

    2. 접근 방법

     

    • 시간 제한: 1초
    • 메모리 제한: 256MB
    • 정렬

     

    3. 파이썬 코드

     

    import sys
    
    input = sys.stdin.readline
    # 행, 열 길이
    R, C = map(int,input().split())
    # 문자열 받아옴
    words = [ list(map(str,input().strip())) for _ in range(R) ]
    # 문자 역순으로 저장
    new_words = []
    # 아래서부터 문자열을 저장
    for j in range(C):
        ans = ""
        for i in range(R-1,-1,-1):
            ans += words[i][j]
        new_words.append(ans)
    # 문자열 정렬
    new_words.sort()
    # 최종 최대 공통되는 부분 길이 체크
    max_index = 0
    # 행 길이 만큼 반복
    for i in range(1,C):
        # 초기 인덱스값 설정
        index = 0
        # 0번 인덱스부터 앞뒤 비교해가며 값이 같은경우
        if new_words[i-1][index] == new_words[i][index]:
            # 어디까지 공통된 부분인지 체크하는 while 선언
            while new_words[i-1][index] == new_words[i][index]:
                # index 값 1 씩 증가
                index += 1
            # 최고 index 값 갱신
            if max_index < index:
                max_index = index
    # 아래서부터 max_index 값을 찾았기 때문에 열의 길이에서 max_index 값에 인덱스 값계산을 한 1을 더해서 정답 출력
    print(R - max_index - 1)

     

    4. 문제를 풀고난 후 생각

     

    • 입력으로 들어온 문자열을 제일 끝 문자열부터 더해가며 저장한다.
    alfa
    beta
    zeta
    • 위의 예시의 경우 "aaa", "zba", "eel", "ttf" 의 문자를 새로운 리스트에 저장을 한다.
    • 이후 정렬을 통해서 "aaa", "eel", "ttf", "zba" 로 정렬을 해준후 1번 인덱스 부터 비교를 시작한다.

    • 위 두 문자를 비교해서 같은 경우 index 값을 1씩 증가시켜가며 다음 문자를 비교한다.

    • 문자가 같다는 가정하에 다음 문자를 비교하는 방식을 예시를 들었다. 이렇게 비교해가며 다른 문자가 나온 경우 나왔을때 index 값을 비교해 최대 index를 저장해준다.
    • index 값이 열의 끝까지 도달시킨 후 저장시킨 최대 인덱스 + 1 한 값을 행의 개수에서 제외시켜주면 된다.

     

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

     

    • 정렬

    'Python_알고리즘 > Gold V' 카테고리의 다른 글

    2293. [Python]동전 1  (0) 2024.09.05
    6581. [Python]HTML  (0) 2024.08.26
    2866. [Python]문자열 잘라내기  (0) 2024.08.13
    14891. [Python]톱니바퀴  (0) 2024.08.07
    2589. [Python]보물섬  (0) 2024.08.06

    댓글

Designed by Tistory.