1. 공부한 내용

문제1 - 99 클럽 - Next Greater Element III:

[ 문제 풀이 ]

오늘의 문제는 숫자 n이 주어졌을 때, 해당 숫자를 구성하는 모든 숫자들을 사용하여 n보다 큰 숫자 중 가장 작은 수를 return하는 것이다. 이 문제를 처음 접했을 때는 permutations를 사용하더라도 주어진 수의 범위가 작기 때문에 문제 풀이에 지장이 없을 것이라 생각했으나, 출제자의 의도에 벗어난다고 판단하여 풀이를 달리하고자 했다. 하지만, 시간 내에 알맞은 풀이 방법을 떠올리지 못하여 정답 풀이를 확인하였다.

정답 풀이는 다음과 같았다.

  1. 주어진 수를 list(str(n))꼴로 바꿔준다.

  2. 뒤에서 부터 차근차근 조회하며, increasing에 반하는 index를 찾는다.

  3. 해당 index를 기준으로 뒤 쪽의 index만 조회하며 해당 값보다 더 큰 index를 찾는다.

  4. num[2)]와 num[3)]을 swap 한다.

  5. 해당 값이 0과 2**10-1 범위에 있는지 확인 후, 그렇다면 해당 값을, 아니라면 -1을 return 한다.

[ Next permutation ]

클럽장님 코드!!!!!

참고: https://jrc-park.tistory.com/254

Untitled

Untitled

2. 오늘의 회고