728x90

문제:www.acmicpc.net/problem/10819

 

비고:

-Brute force

-다 세지 않고선 규칙을 발견하기 힘들며, 영역 나누기도 힘들어 보이며, 주어진 조건이 가용 시간/메모리 내에 해결 가능

-이런 문제에서 모든 경우를 세기 위해서 next permutation함수를 잘 짜야 한다.

-입력받은 list을 next permutation으로 바꾸며, return은 True/False로 작성

-next permutation을 처음작성하는 거라면 난이도가 있다.

  -기본 규칙은, 배열의 index 0부터(=좌측부터) 우측으로 훑으며 "마지막" 증가(increase)인 index(i)를 찾는다.

  ex) 124653에서 46가 마지막 증가(<)고 4의 index인 2

  -마지막 증가에서의 값보다 크며 가장 우측에 존재하는 값의 index(j)를 찾는다.

  ex) 124653에서 65중에서 5가 더 오른쪽, 5의 index인 4

  -i,j에서의 값 교환

  ex) 124653 -> 125643

  -j보다 우측의 값들을 정렬시킨다.

-난이도중

 

내소스코드:

boj.kr/33b0cb84fe5d4b48b02c860081023606

 

728x90

'CS' 카테고리의 다른 글

[Numpy]np.select  (0) 2020.10.19
[Algorithm]백준, 14888, 연산자 끼워넣기  (0) 2020.10.16
[Algorithm]백준, 1920, 수 찾기  (0) 2020.10.16
[Algorithm]백준, 1912, 연속합  (0) 2020.10.14
[Algorithm]백준, 2630, 색종이 만들기  (0) 2020.10.12

+ Recent posts