[백준] 1339번(단어 수학)

·2023년 9월 17일

백준 문제풀이

목록 보기
125/159

백준 1339번


최종 제출 코드

# 변수선언
number = [i for i in range(9, -1, -1)]
cnt = [[] for i in range(26)]
for i in range(26):
  cnt[i] = [chr(i+65),0]

# 입력받기
n = int(input())
for i in range(n):
  sentence = input()
  for j in range(len(sentence)):
    cnt[ord(sentence[j])-65][1] += 10**(len(sentence)-j-1)

# 정렬하기
sorted_array = sorted(cnt, key=lambda x: -x[1])

# 결과값 구하기
result = 0
for i in range(10):
  result += (sorted_array[i][1]*number[i])

# 출력하기
print(result)

◼️ 알파벳의 등장 위치와 횟수를 숫자로 변환하여 저장

  • ABCE, DCA의 경우 A는 1001번 등장, B는 100번 등장 C는 20번 등장, D는 100번 등장, E는 1번 등장으로 생각할 수 있다.
  • 이처럼 알파벳의 인덱스를 사용해서 자릿수로 치환하여 값을 저장하는 리스트 cnt 생성
  • 알파벳과 등장 횟수를 함께 저장한다.

◼️ 등장 횟수를 기준으로 cnt를 정렬한 sorted_array 생성

  • 등장 횟수를 기준으로 내림차순(많이 등장한 알파벳이 앞으로 오게) 정렬
  • 정렬한 리스트를 사용하여 가장 앞에 온 횟수부터 9~0을 곱해 결과값을 구한다.
profile
백엔드 개발자가 되고 싶어요(22.8.15~)

0개의 댓글