yechan1031   1년 전

배열 A가 주어졌을 때, 수열 P를 적용한 결과가 비내림차순이 되는 수열을 찾는 프로그램을 작성하시오. 비내림차순이란, 각각의 원소가 바로 앞에 있는 원소보다 크거나 같을 경우를 말한다. 만약 그러한 수열이 여러개라면 사전순으로 앞서는 것을 출력한다.

비내림차순이란, 각각의 원소가 바로 앞에 있는 원소보다 크거나 같을 경우를 말한다.

그럼 예제 출력1은 1 2 0이 아닌 일반 오름차순인 0 1 2 아닌가요?

bamgoesn   1년 전

문제가 요구하는 건 "주어진 수열을 정렬시키는" 수열이지, 출력할 수열이 정렬되어 있기를 원하는 게 아닙니다.

어떤 수열 A가 주어졌을 때, B[i] = A[P[i]]를 만족하는 수열 B에 대해 B가 오름차순 정렬이 되게 하는 P를 출력하시오. 가 문제가 요구하고 있는 거거든요. 이때 P는 0~N-1의 수를 한 번씩만 포함하고 있고요.

좀 더 일반적인 얘기로 들어가면, 문제에서 언급한 0부터 N-1까지의 수를 한 번씩 포함하고 있는 수열을 특별히 열이라고 부릅니다. 영어로는 permutation이에요. 어떤 수가 몇 번 포함되는지에 대한 제한이 없는 더 일반적인 용어인 열은 영어로 sequence고요. 순열은 0~N-1의 수를 어느 순서로 뒤섞는지에 대한 것과 관련이 있어서, 길이 N인 열 A 열 P를 적용한다는 말이 자연스럽습니다. 이때 열 A에 열 P를 적용해서 열 B로 만드는 걸 B[i] = A[P[i]]로 정의한다고 알아두시면 좋습니다.

댓글을 작성하려면 로그인해야 합니다.