<Algorithm> 14. 10972번 다음순열
by BFine반응형
1. 10972번 다음순열
오른쪽에서 왼쪽으로 찾으면서 오른쪽의 수가 왼쪽의 수 보다 큰 경우를 탐색 ( > : 진행, < : 탐색 ) ex) 1 2 < 4 3
탐색된 왼쪽 수를 기준으로 오른쪽 수 중에서 큰 수와 자리 변경
자리 변경 후 SWAP
- 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;public class Main {static int[] input;public static void main(String[] args) throws NumberFormatException, IOException {BufferedReader br=new BufferedReader(new InputStreamReader(System.in));int N=Integer.parseInt(br.readLine());String[] in=br.readLine().split(" ");input=new int[N];boolean checkValue=false;for(int i=0;i<N;i++) {input[i]=Integer.parseInt(in[i]);}for(int i=N-1;i>0;i--) {if(input[i]>input[i-1]){checkValue=true;for(int j=N-1;j>=i;j--) {if(input[j]>input[i-1]) {int temp=input[i-1];input[i-1]=input[j];input[j]=temp;swap(input, i);break;}}break;}}if(checkValue==false) {System.out.println("-1");}else {for(int i=0;i<N;i++) {System.out.print(input[i]+" ");}}}public static void swap(int[] input,int start) {int count=start;for(int i=input.length-1;i>start;i--) {if(i<=count)break;int temp=input[i];input[i]=input[count];input[count]=temp;count++;}}}
cs
반응형
'공부(2018~2019) - 스킨변경전 > Algorithm' 카테고리의 다른 글
<Algorithm> 16. 10819번 차이를 최대로 (0) | 2018.07.29 |
---|---|
<Algorithm> 15. 10973번 이전순열 (0) | 2018.07.27 |
<Algorithm> 13. 1463번 1로 만들기 (0) | 2018.07.24 |
<Algorithm> 12. 2747번 피보나치 (0) | 2018.07.24 |
<Algorithm> 11. Queue&Stack 계산기(후위표기) (0) | 2018.04.22 |
블로그의 정보
57개월 BackEnd
BFine