프로그래머스 C++
프로그래머스 모음 사전 C++
Srff5123
2024. 12. 16. 18:17
728x90
해당 문제의 규칙을 먼저 고민을 해보았다.
각 자리의 알파벳은 뒤에 나올 모든 가능한 조합의 개수만큼 순서를 이동시킨다.
첫 번째 자리의 A는 이후 최대 5^4개의 단어를 생성한다.
가중치로 따지면
첫 번째는 781가지, 두번째는 156가지, 세번째는 31가지, 네번째는 6가지, 다섯번쨰는 1가지가 가능하다.
단어의 위치 계산 : 각 자리의 문자를 기준으로 해당 자리에서의 기여도를 계산해 누적합을 구한다.
word가 EIO가 주어지게되면
첫번째 E는 A에서 2번째 위치로 1 * 781 + 1 = 782 가 될것이고
두번째 I는 A에서 3번째 위치로 2* 156 + 1 = 313
세번째 O는 A에서 4번째 위치로 3 * 31 + 1 = 94가 된다
마지막으로 각 자리 가중치를 더해주어 최종결과를 반환하면 해당 알파벳이 몇번째 위치에 있는지 알 수 있게 된다.
728x90