도서관에서 도서를 구분하는 코드는 다음과 같이 구성된다.
726:5092:P735:c
A | A-1 | B | B-1 |
---|---|---|---|
726 | 5092 | P735 | c |
A
: 세 자리 숫자이며, 각 자리에는 0~9까지의 숫자가 들어간다.A-1
:A
의 부가 정보이며 6자리 이하의 숫자다. 각 자리에는 0~9까지의 숫자 가 들어간다.B
: 알파벳 대문자 1개 + 세 자리의 숫자다. 알파벳에는 A-Z 중 하나가 들어가며 숫자의 각 자리에는 0~9까지의 숫자가 들어간다.B-1
:B
의 부가정보이며 소문자 알파벳 하나이다. a-z 중 하나가 들어간다.A-1
,B-1
은 부가 정보이므로 없을 수도 있다.- 코드의 구성 요소들은
:
으로 구분한다. - 존재하지 않는 정보는
:
으로 구분하지 않는다. 예를 들어,A-1
이 없는 경우000::P001:c
가 아니라000:P001:c
와 같이 표현한다.
도서관의 모든 책들은 고유한 코드로 구분한다. 같은 책이 여러 권 존재해도 모두 다른 코드를 갖는다. 그리고, 책들을 코드 순으로 정렬하여 배치한다.
코드를 정렬하는 방법은 다음과 같으며, 정렬시 우선 순위는 A
, A-1
, B
, B-1
이다.
A
는 세 자리 숫자를 자연수로 변환해서, 오름차순으로 정렬한다.A-1
은 숫자를 자연수로 변환해서 오름차순으로 정렬한다. 단, 자연수로 변환한 수가 동일할 경우A-1
의 길이가 짧은 쪽을 앞에 정렬한다. 예를 들어, 01과 001 중에서는 01이 앞에 둔다.B
는 알파벳 순으로 정렬하고, 알파벳이 동일한 경우 세 자리 수를 자연수로 변환하여 오름차순으로 정렬한다.B-1
은 알파벳 순으로 정렬한다.- 부가 정보가 없는 책이 있을 책보다 앞으로 정렬한다. 예를 들어,
000:A000:c
과000:0:A000:c
는A-1
을 제외한 모든 코드가 동일하다. 이 때A-1
이 없는 전자의 책을 앞으로 정렬한다.
도서 코드들이 담긴 배열 codes
가 주어지고, 그 중 한개의 도서의 코드인 문자열 target
이 주어질 때, 규칙에 따라 codes
를 정렬하면 target
이 몇 번째에 위치하는지 리턴하는 함수 solution을 완성하시오.
제한 사항
- 코드 규칙에서 벗어나는 코드는 주어지지 않는다.
- 2 < codes.length < 2,000
입출력 예
codes | target | answer |
---|---|---|
["726:5092:P735:c", "823:54:H619:c", "231:765:C452:e"] | "823:54:H619:c" | 3 |
["001:M489", "001:0:M489", "001:00:M489", "001:00000:M489", "001:M489:c"] | "001:M489:c" | 2 |