Dear_D

Dear_D

Dear_d

Dear_DDear_D· 2년

질문이 문제 어떻게 풀어야할까요?

대문자 알파벳 A, B, C, D, E, F, J 를 이용해서 문자열 두 개를 만들고, 두 문자열의 합을 구하고자 한다. 문자열의 합은 다음과 같이 구한다. 알파벳을 1 부터 7 까지의 숫자로 대입하여 숫자를 만들면 두 문자열이 두 숫자로 변환되고 변환된 두 숫자를 더한다. 예를 들어 A=5, B=3, C=2, D=1, E=4, F=7, J=6 이고, 두 문자열이 FAC, AABBJ 라면 변환된 숫자는 각각 752, 55336 이고 변환된 숫자들의 합은 56088 이다. 만약 A=1, B=2, C=3, D=4, E=5, F=6, J=7 이라면 변환된 숫자는 각각 613, 11227 이며 그 합은 11840 이다. 그리고 A=7, B=6, C=3, D=1 or 2, E=2 or 1, F=5, J=4 일 때 각각 변환된 숫자가 573, 77664가 되고 그 합이 78237 이며 이 때 최대합이 된다. A~J 로 이루어진 두 문자열을 입력 받고 위와 같이 변환했을 때 최대 합을 출력하는 프로그램을 작성하시오. 문자열의 길이는 최대 10 이다. 입력예시) 첫 번째 문자열 : AJC765 두 번째 문자열 : AACJ7756 출력값 : 8521 처음에는 배열을 통해서 0번째 인덱스부터 마지막 인덱스까지 순으로 높은 값을 할당하고 중복되는 수가 있으면 같은 수를 할당하게 한 후에 각 수를 더해서 최대합으로 만들려고 했었는데 생각해보니깐 입력 받는 두 문자열을 비교해서 가능한 최대의 값으로 각 알파벳에 대한 수를 할당해야하는 문제가 있는데 좋은 발상이 안 떠올라서 질문드려요!
221
1
0
윈비
윈비·2023-06-16
이 문제를 해결하는 방법 중 하나는 각 알파벳에 대해 몇 번 등장하는지 세고, 가장 많이 등장하는 알파벳에 7을, 그 다음으로 많이 등장하는 알파벳에 6을, 그 다음에 5를, 이런 식으로 값을 할당하는 것입니다. 이 방법을 이용하면 합계를 최대화할 수 있습니다. 아래 C 코드를 참고하시기 바랍니다. #include <stdio.h> #incl...