소스 코드

T = int(input())

for tc in range(1,1+T):

    # 찾을 문자열
    k = int(input())

    # 문자열
    word = input()

    # 문자열의 길이
    num = len(word)

    # 문자열 저장할 장소
    board = []

    for q in range(num):
        for w in range(num):

            # 현재 index값(w) + 찾을 문자열의 길이(q) + 1의 길이 확인
            if w+q+1 <= num:
                board.append(word[w:w+q+1])

    # 중복 제거
    board = list(set(board))

    # 정렬
    board.sort()

    # k-1(리스트는 시작 index값이 0인데, 문제에서는 1임)
    if len(board) > k-1:
        print('#{} {}'.format(tc,board[k-1]))

    else:
        print('#{} {}'.format(tc,'none'))

 


해결 방법

1. 길이가 4인 문자열의 모든 문자열은 4 + 3 + 2 + 1임

(문자열의 최대 길이가 400이므로, 최대 400 * 401 / 2개의 문자열을 만들어야 함)

 

2. 새로운 문자열은 슬라이싱을 통해 만들었음

 

3. 새로운 문자열 저장, 중복 제거, 정렬

 

4. k-1번째 위치에 값이 존재하는 지 확인 후 출력


느낀 점

 

 

ps. 개인적인 코드와 코드를 작성의 이유를 적은 것입니다.

 

오류적절치 않은 문법이 존재할 수 있으며, 다른 분들께는 굉장히 비효율적인 방법으로 여겨질 수 있습니다.

 

혹시 개선 사항, 오류 및 문제에 대한 수정 사항 등을 댓글로 남겨주신다면 감사한 마음으로 배우고 수정하겠습니다.