프로그래머스 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