Skip to content

Latest commit

 

History

History
47 lines (31 loc) · 2.57 KB

quiz_10159.md

File metadata and controls

47 lines (31 loc) · 2.57 KB

도서관에서 도서를 구분하는 코드는 다음과 같이 구성된다.

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:c000:0:A000:cA-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