Daily-study
[오늘의 공부] 전공 과제, 알고리즘
by Roseline Song | April 7, 2019
Social Marketing 과제
-
사회 마케팅 사례 조사
-
마음약방 조사, PPT 제작, 제출
백준 알고리즘 1038번
- 브루트 포스 1038번 : 감소하는 수
가볍게 생각했는데, 브루트포스 방식으로 하려니 시간 제한때문에 계속 틀렸나고 나온다. 브루트 포스 방식으로 구한 감소하는 수들을 보니 각 자리수의 감소하는 수들 사이에는 많은 텀이 존재했다. 예를 들어, 6자리수의 마지막 감소하는 수 987654에서 7자리수의 첫번째 감소하는 수 6543210를 보면 둘 사이에 엄청난 텀이 있다. 8자리수로 넘어가는 순간에는 몇분이 지나도 첫번째 수가 나오지 않는다. 따라서 이 텀까지 처음부터 끝까지 대입하면 그만큼 연산이 낭비된다. 그래서 대입하는 방식으로 감소하는 수를 찾는게 아니라, 감소하는 수들의 규칙을 찾아서 만들어주는 방향으로 바꿨다.
브루트포스로 인덱스 500까지만 뽑아서 봤을 때 어느 정도 규칙이 보였다. 자릿수가 바뀔 때 첫번째 수의 첫번째 자리 수는 자릿수 길이의 -1이라든지, 첫번째 수 다음에 오는 수는 첫번째 수에서 첫번째 자리 수가 1증가되어 나온다는 것 등등. 예를 들어 자릿수가 4자리 수로 바뀔 때 첫번째 수는 3210이고, 다음수는 반드시 4210이 된다. 문제는 각 자리수마다 숫자를 바꿔야해서 분해하고, int로 바꾸고, 값을 바꾸고, 다시 문자열로 바꾸는 과정이 복잡했다. 풀다보니 3시간이 넘고 새벽 4시가 다됐다. 오후에 발표가 있으니 안 풀리는 부분은 나중에 다시 해야겠다..
Subscribe via RSS