-
[알고리즘] 백준 - 1132 - 합알고리즘 2022. 11. 29. 19:39728x90
1. 문제
2. 접근
1. 처음에는 dictionary 를 사용해서 계수를 구하여 문제를 풀었는데, 첫번째 자리에 나오는 alphabet은 0이 되면 안된다는 조건때문에 문제를 계속 틀렸다 ( 특정 알파벳을 다 쓰지 않는 예시들은 맞을 수 있으나, 알파벳을 다 쓰는 예시는 틀린다 )
2. 그래서 구글링을 통해 안 점은 first 배열을 만들고 A - J 순서로 0을 채우고, 반복문을 돌리며 첫번째 알파벳을 보고 배열에 체크를 하는 것이다.
3. 그리고 역순으로 정렬해서 거꾸로 체크해가며 9부터 대입하여 문제를 푼다
3. 풀이
n = int(input()) arr = [[0, 'A'], [0, 'B'], [0, 'C'], [0, 'D'], [0, 'E'], [0, 'F'], [0, 'G'], [0, 'H'], [0, 'I'], [0, 'J']] first = [0 for _ in range(10)] for i in range(n): word = input() size = len(word) for j in range(size): idx = ord(word[size-j-1]) - 65 # 65는 ord('A') 값 => word를 순차적으로 해서 idx를 구한다 if j == size - 1: first[idx] = 1 arr[idx][0] += 10**j # 계수를 구해서 더해준다 arr.sort(reverse=True) #내림차순 if arr[9][0] != 0: # 내림차순 정렬된 배열의 마지막 원소의 값이 0이 아니라면 모든 알파벳 사용한것 for i in range(9, -1, -1): # 거꾸로 구해간다 if first[ord(arr[i][1]) - 65] == 0: # first에 들어있는지 체크 temp = list(arr[i]) arr.remove(temp) arr.append(temp) break res = 0 for i in range(10): res += arr[i][0] * (9-i) # 계수 * (9-i) print(res)
'알고리즘' 카테고리의 다른 글
[알고리즘] 백준 - 1613 - 역사 (0) 2022.12.01 [알고리즘] 백준 2458 - 키 순서 (2) 2022.12.01 [알고리즘] 프로그래머스 - 정수 삼각형 (0) 2022.11.22 [알고리즘] 백준 주사위 - 1041 (0) 2022.11.15 [알고리즘] 백준 1966 - 프린터 큐 (0) 2022.11.09