취업 포트폴리오 용으로 파일 브라우져를 만들어보고 있는 영준이는 1주일 내내 불꽃 코딩을 하며 그럴듯한 파일 브라우져를 만들었습니다.
자신의 작품에 만족을 하고 있었는데 다양한 TV쇼 프로가 들어있는 폴더에 들어가니 뭔가 이상한게 보였습니다. 대부분의 파일이 파일 이름과 순서를 나타내는 번호 혹은 시간등이 들어가 있는데, 단순 정렬 함수를 이용해서 정렬 할 경우 (사전순서) 10이 3보다 먼저 나오는 문제들이 발생하고 있는 것 입니다.
너무 어색함을 느껴서 좀더 자연스럽게 정렬을 하고 싶은 영준이는 아래와 같은 규칙을 세웠습니다.
위의 규칙에 따라 파일명을 정렬하여 출력하는 프로그램을 작성하세요.
첫 줄에는 파일의 갯수 N (1 <= N <= 100,000) 이 주어집니다.
그 다음줄 부터는 N개의 파일 이름 (영문 소문자, 하이픈(-), 언더바(_), 콜론(:), 점(.), 숫자로 이루어졌으며 길이는 최소 1글자, 최대 25글자 입니다)
위의 규칙에 따라 정렬한 순서대로 한 줄에 하나씩 파일명을 출력합니다.
10
mt_5_43.jpg
mt_10_20.jpg
mt_10_5.jpg
mt_4_55.jpg
mt_4_53.jpg
photo_1.jpg
photo_13.jpg
photo_3.jpg
pic-9_10_23:5.jpg
pic-9_9_3:55.jpg
mt_4_53.jpg
mt_4_55.jpg
mt_5_43.jpg
mt_10_5.jpg
mt_10_20.jpg
photo_1.jpg
photo_3.jpg
photo_13.jpg
pic-9_9_3:55.jpg
pic-9_10_23:5.jpg
"01abc1" < "001abc2" -> TRUE. Leading zero 는 무시합니다.
"1" < "." -> TRUE. ASCII 코드 값으로는 "." 이 더 작지만 숫자가 우선한다는 규칙에 의해 참 입니다.
"s001b0023" == "s1b23" -> TRUE. Leading zero 를 무시할 경우 문자, 숫자들이 모두 같으므로 두 문자열은 같습니다. 이 경우 먼저 나온 파일이 우선합니다.
"0ab" < "bc" 문자 앞에 붙은 0은 숫자 0으로 취급해야 합니다.