이 도전은 팬케이크 뒤집기 와 관련이 있습니다.
팬케이크 정렬에 대해 들어 보았을 것 입니다. 팬케이크 스택은 팬케이크가 접시에서 가장 작은 것까지 정렬 될 때까지 주걱을 스택에 넣고 주걱 위의 모든 팬케이크를 뒤집어 크기별로 정렬합니다. 탄 팬케이크 문제는 약간 다릅니다. 모든 팬케이크에는 이제 구운 한쪽면이 있으며, 분류가 완료되면 각 팬케이크의 탄 쪽이 플레이트를 향해야합니다.
예를 들어, 다음 스택 (왼쪽의 팬케이크 크기 , 오른쪽의 번 사이드 0
및 1
오른쪽의 번크 사이드를 의미 )이 주어진 경우 :
1 0
3 1
2 1
당신은 전체 스택을 뒤집을 수 있고 20 30 11
, 상단 2 개를 31 21 11
뒤집어서 전체 스택을 다시 뒤집어서 얻을 수 10 20 30
있습니다. 플립 3, 플립 2, 플립 3의 일련의 움직임은로 표현 될 수있다 3 2 3
.
도전
- 팬케이크 크기 (고유 할 필요는 없음)와 그 방향이 주어지면 유효한 번 팬 팬케이크 정렬 순서, 즉 번 크면이 아래로 향하여 팬케이크의 스택이 가장 작은 것에서 가장 큰 것으로 정렬되는 플립 시퀀스가 출력됩니다.
- 입력 및 출력은 구분 기호가있는 임의 형식 일 수 있지만 사용하는 형식을 지정하고 입력 형식의 끝이 스택 상단 (TOS)인지 지정하십시오.
- 팬케이크 제로 뒤집기가 허용됩니다.
- 입 / 출력에서 혼합 분리기가 허용됩니다.
테스트 사례
다음 테스트 케이스 모두에서 입력은 목록이고 출력은 공백으로 구분 된 문자열이며 TOS는 왼쪽에 있습니다.
[[1, 0], [3, 1], [2, 1]]
"3 2 3"
[[5, 1], [3, 0], [4, 1], [2, 1], [1, 0]]
"5 3 4 1 3 2 1"
[[5, 1], [3, 0], [3, 0], [1, 1]]
"4 3 2 3"
언제나 그렇듯이 명확하지 않거나 잘못된 것이 있으면 의견에 알려주십시오. 행운과 좋은 골프!