viewimage.php?id=3dae&no=24b0d769e1d32ca73ded81fa11d02831ecb95a6124af73c1834c571bfbe66ae01a3963d71e9b7094aacbcc68e69e8864fd110822ea8c0a7d45a5b3e3

지금 https://www.acmicpc.net/problem/1339 1399번 단어 수학 풀고있는데

테스트 케이스들은 통과하는데 시간 초과도 아니고 틀렸습니다가 떠서 내가 짠 소스에 반례가 있는 것 같은데 그게 어떤 상황에서 생기는지 잘 모르겠어가지고,, 일단 내가 구현한 아이디어는 이럼


GCF

ACDEB

이렇게 입력이 들어오면 단순하게 생각했을 때 일단 자릿수가 높은 A, C같은 수들이 큰 숫자를 가질수록 합이 클 가능성이 크니까

A > C > G > D > C > E > F > B 이렇게 판단해서 우선 이걸 배열에 넣어둠(숫자를 넣어줘야 하는 알파벳이 얼마나 있나 확인 겸)


그 다음 백트래킹을 통해 9도 넣어보고 8도 넣어보고 7도 넣어보고.. 하되, 우선 A = 9; C = 8; G = 7, ..., B = 2; 처럼 가중치가 높은 순서대로 실행한 다음,

다른 경우를 시도해볼 때 아직 숫자를 적용하지 않은 D, E 이런 글자들에 무조건 9를 넣어서 이게 다 9가 들어가면 지금까지의 합보다 커질 수 있는지로 가지치기를 해서 재귀 횟수를 줄임


그다음 합을 구해서 가장 큰 합을 출력하는 방식으로 구현했는데 어느 부분에서 틀렸는지 잘 감이 안 잡혀가지고 여따 올려봄


내가 짠 코드: http://boj.kr/5fe1cd8958be4ba0a2df221c72dfcc4b