SW Expert #16003

도연·2023년 6월 12일
0

코테준비

목록 보기
3/3

문제 코드

#16003

문제

상현이가 사용하는 창문OS에서는, 키보드의 ‘Print Screen’ 키를 누르면 화면 전체가 캡쳐되어 “캡쳐화면” 폴더에 저장된다. 이 폴더에는 캡쳐된 그림 파일만 저장된다.

상현이는 지금까지 화면을 총 N번 캡쳐했고, 그 중 i(1<=i<=N)번째 그림의 파일명은 string(i) + “.png”였다. (예를 들어, 31번째 그림의 파일명은 “31.png”이다.) 상현이는 캡쳐 이후 파일을 지우지 않았기에, ‘캡쳐화면’ 폴더에는 정확히 N 개의 파일이 들어 있다.
창문OS의 파일 탐색기는 폴더 안의 파일을 보여줄 때 파일명을 사전 순(C의 strcmp, C++의 std::string, Java의 String 등의 비교 기준과 같다)으로 정렬하여 순서대로 보여준다. 따라서, 만약 N = 11이라면, 탐색기를 켜고 “캡쳐화면” 폴더의 파일들을 살펴보면

‘1.png’, ’10.png’, ’11.png’, ‘2.png’, …, ‘9.png’

의 순서대로 보여줄 것이다.

상현이가 지금까지 화면을 캡쳐한 횟수 N이 주어질 때, 파일 탐색기에서 “캡쳐화면” 폴더를 켰을 때 나타나는 첫 min(50, N)개의 파일 이름을 모두 순서대로 출력하는 프로그램을 작성하라.

[입력]
첫 번째 줄에 테스트 케이스의 수 T가 주어진다.
각 테스트 케이스는 한 개의 줄로 이루어지며, 각 줄에는 정수 N(1<=N<=10^9)가 주어진다.

[출력]
각 테스트 케이스마다, 파일 탐색기에서 “캡쳐화면” 폴더를 켰을 때 나타나는 첫 min(50, N)개의 파일 이름을 공백 하나씩을 사이로 두고 모두 순서대로 출력한다.

작성한 정답

t = int(input())

for t in range(1 , t+1 ):
    n = int(input())
    ntu = {}
    nList = []
    for i in range (1, n+1) :
        if str(i)[0] not in ntu :
            ntu[str(i)[0]] = ["{0}{1}".format(str(i),".png")]
        else :
            ntu[str(i)[0]].append("{0}{1}".format(str(i),".png"))

    for k , v in ntu.items():
        nList = nList + sorted(v)

    print("#{0}".format(t), end=" ")
    print(*nList[:50])

제출은 했는데 케이스를 전부 통과하질 못한다.
런타임 에러가 뜨는데 아무래도 코드가 쓸데 없이 시간을 잡아먹는 거 같다.
처음에 풀때는 조건문을 여러개 넣어서 리스트를 여러개 만드는 방법을 생각했는데
정렬 조건을 생각해보니 sts 타입이면 조건이 복잡할 것도 없다 ..
아무래도 원래 코드에서 고쳤더니 쓸데없는 반복문 때문에 코드가 짧아도 런타임 에러가 나는 거 같다.

profile
모연

0개의 댓글