무대로 호명하기
문제
N명의 학생이 강당에 일렬로 줄을 서 있다. 1번부터 N번까지의 각 학생이 줄을 서 있는 상태에서, 총 N명의 학생을 차례대로 호명하고자 한다.
우리가 X번 학생을 부르게 되면 X번 학생은 무대로 올라온다. 이때, X번 학생의 뒤에 있던 학생들은 한 칸씩 자리를 앞으로 옮기게 된다. 이 과정에서 걸리는 시간은 X번 학생이 K번째 순서에 있다고 했을 때, 가장 앞 자리로 이동하기 위하여 건너가야 하는 학생의 수인 K-1초이다.
예를 들어 N=8명의 학생이 다음과 같이 줄을 서 있다고 가정하자. 각 학생의 번호는 1번부터 N번까지 존재한다.
| 순서 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
|---|---|---|---|---|---|---|---|---|
| 학생 번호 | 7 | 3 | 5 | 1 | 8 | 6 | 4 | 2 |
이때 1번 학생을 호명하면, 강당 위에 1번 학생이 올라서게 되고, 이 과정에서 3초가 소요된다. 이후 학생들이 강당에 줄을 서 있는 형태는 다음과 같을 것이다.
| 순서 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
|---|---|---|---|---|---|---|---|
| 학생 번호 | 7 | 3 | 5 | 8 | 6 | 4 | 2 |
결과적으로 호명하고자 하는 N명의 학생 정보가 주어졌을 때, 모든 학생이 무대 위로 올라오기까지 걸리는 시간의 총 합을 구하는 프로그램을 작성하여라.
위 예시와 동일하게 초기 상태가 주어졌을 때, 차례대로 1번, 2번, 3번, 4번, 5번, 6번, 7번, 8번 학생을 호명했다고 가정하자. 이때 각 단계별 학생의 순서와 소요 시간을 계산하면 다음과 같다.
| 순서 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 소요 시간 |
|---|---|---|---|---|---|---|---|---|---|
| 초기 상태 | 7 | 3 | 5 | 1 | 8 | 6 | 4 | 2 | 0초 |
| 1번 호명 | 7 | 3 | 5 | 8 | 6 | 4 | 2 | 3초 | |
| 2번 호명 | 7 | 3 | 5 | 8 | 6 | 4 | 9초 | ||
| 3번 호명 | 7 | 5 | 8 | 6 | 4 | 10초 | |||
| 4번 호명 | 7 | 5 | 8 | 6 | 14초 | ||||
| 5번 호명 | 7 | 8 | 6 | 15초 | |||||
| 6번 호명 | 7 | 8 | 17초 | ||||||
| 7번 호명 | 8 | 17초 | |||||||
| 8번 호명 | 17초 |
따라서 이 경우, 정답은 17초이다.
입출력 예시
예시 1
입력
8, [7, 3, 5, 1, 8, 6, 4, 2], [1, 2, 3, 4, 5, 6, 7, 8]
출력
17
예시 2
입력
10, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
출력
0
예시 3
입력
10, [10, 9, 8, 7, 6, 5, 4, 3, 2, 1], [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
출력
45
예시 4
입력
10, [7, 3, 2, 5, 1, 6, 8, 9, 10, 4], [9, 2, 1, 5, 4, 6, 8, 10, 3, 7]
출력
26
입력 조건
가장 먼저 학생의 수 N이 자연수로 주어진다. (N은 1,000보다 작거나 같은 자연수다.)
이어서 1번부터 N번까지의 학생이 초기에 줄을 서 있는 순서 정보가 담긴 배열 students가 주어진다.
이어서 호명하고자 하는 N명의 학생의 번호가 담긴 배열 calls가 주어진다. 각 학생은 한 번씩만 부른다.
출력 조건
모든 학생이 무대 위로 올라오기까지 걸리는 시간의 총 합을 자연수 형태로 반환하여라.
요구사항
- solution(N, students, calls) 함수를 만들고 답을 반환해야 합니다
- 쓸 수 있는 말은 파이썬, 자바스크립트입니다
- 메모리 제한은 256MB입니다. 브라우저에서는 재지 않고 적기만 합니다
- 시간 제한은 출제자의 정답 코드를 같은 런타임에서 재서 정합니다
- 이 문제는 프롬프트가 아니라 코드를 냅니다. 그 코드는 이 기기의 브라우저에서 돌고, 서버로는 나온 출력의 지문과 걸린 시간만 갑니다. 맞았는지는 서버가 정합니다. 실행 시간은 각자 기기가 적어 보내는 값이라, 코드와 기기 정보를 순위표에 같이 내걸어 둡니다.
- 출력이 글자 하나까지 기대값과 같아야 합니다. 줄 안의 빈칸은 다른 글자와 똑같이 봅니다.
- 케이스는 15개이고, 그 가운데 4개는 입력과 기대 출력을 함께 보여 줍니다. 나머지는 제출할 때만 쓰이고 화면에는 보여 주지 않습니다.
- 케이스 15개를 전부 통과해야 해결입니다.
예시
공개 케이스 4개입니다. 채점에는 숨은 케이스가 함께 쓰입니다. 케이스 15개를 전부 통과해야 해결입니다.
8, [7, 3, 5, 1, 8, 6, 4, 2], [1, 2, 3, 4, 5, 6, 7, 8]
17
10, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
0
10, [10, 9, 8, 7, 6, 5, 4, 3, 2, 1], [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
45
10, [7, 3, 2, 5, 1, 6, 8, 9, 10, 4], [9, 2, 1, 5, 4, 6, 8, 10, 3, 7]
26
참고 사항
풀이에 도움이 되는 배경입니다. 지켜야 하는 규격은 위의 입출력 조건과 요구사항에 있습니다.
원본에서 모의고사 1회 1번입니다.
풀이
코드는 이 기기에서돕니다. 서버로는 나온 출력의 지문과 걸린 시간만 갑니다. 맞았는지는 서버가 정합니다.
제출은 로그인 하셔야 됩니다. 공개 케이스로 돌려보는 것은 로그인 없이도 됩니다.
공개 케이스 4개로 돌려보기가 됩니다. 제출하면 숨은 케이스까지 돕니다.
이 문제를 푼 사람
시간은 푸는 데 걸린 시간입니다. 입력을 읽는 시간은 푸는 분이 어쩔 수 없는 값이라 빼고 셉니다. 그리고 이 값은 각자 기기가 적어 보내는 값이라, 어느 기기에서 쟀는지 같이 적어 둡니다.
입력을 읽는 데 1ms (순위에서 뺀 시간입니다)
로그인하시면 이 문제를 푼 뒤에 코드를 보실 수 있습니다.
입력을 읽는 데 7ms (순위에서 뺀 시간입니다)
입력을 읽는 데 7ms (순위에서 뺀 시간입니다)
이 분이 코드를 비공개로 두셨습니다.