https://www.acmicpc.net/problem/1339
1339번: 단어 수학
첫째 줄에 단어의 개수 N(1 ≤ N ≤ 10)이 주어진다. 둘째 줄부터 N개의 줄에 단어가 한 줄에 하나씩 주어진다. 단어는 알파벳 대문자로만 이루어져있다. 모든 단어에 포함되어 있는 알파벳은 최대
www.acmicpc.net

문제 해석
대문자 알파벳으로 이루어진 단어가 N개 주어진다. 해당 알파벳의 종류는 10개 이하이며 같은 알파벳은 같은 숫자를 대입할 때, 주어진 알파벳을 모두 더해 가장 큰 수가 나오는 값을 구하는 문제이다.
코드
input = __import__('sys').stdin.readline
n = int(input())
# 아스키 코드로 변환해 해당 값에 크기를 저장한 배열
arr = [0] * 30
for _ in range(n):
s = input().strip()
s = s[::-1]
# 아스키 값으로 변환한 값을 인덱스로 지정해 arr 리스트에 크기만큼 더하기
for i in range(len(s)):
al = s[i]
arr[(ord(al)-ord('A'))] += 10 ** i
# 오름차순 정렬하여 9부터 1씩 감소시켜 곱해주기
# 알파벳의 종류는 최대 10개 이므로 10번의 연산만 해주면 된다.
arr = sorted(arr, reverse = True)
cnt = 9
for i in range(10):
arr[i] *= cnt
cnt -= 1
# 모두 더한값이 정답
print(sum(arr))
문제 풀이
1. 주어진 단어의 알파벳을 아스키 코드로 변환하여 해당 자릿수 값을 저장. ABC가 주어지면 100A + 10B + C 이므로
각각 arr배열에 인덱스에 맞게 100, 10, 1을 더해주기.
2. arr 배열을 오름차순 정렬
3. 정렬된 배열을 9부터 차례대로 곱해주기
4. 해당 배열을 모두 더한 값이 정답.
'알고리즘 > BOJ' 카테고리의 다른 글
[백준/파이썬] 16236번 아기 상어 (0) | 2022.08.01 |
---|---|
[백준/파이썬] 16953번 A → B (0) | 2022.08.01 |
[BOJ/python] 1439번 뒤집기 (0) | 2022.07.30 |
[BOJ/python] 1946번 신입 사원 (0) | 2022.07.30 |
[BOJ/python] 1931번 회의실 배정 (0) | 2022.07.30 |
https://www.acmicpc.net/problem/1339
1339번: 단어 수학
첫째 줄에 단어의 개수 N(1 ≤ N ≤ 10)이 주어진다. 둘째 줄부터 N개의 줄에 단어가 한 줄에 하나씩 주어진다. 단어는 알파벳 대문자로만 이루어져있다. 모든 단어에 포함되어 있는 알파벳은 최대
www.acmicpc.net

문제 해석
대문자 알파벳으로 이루어진 단어가 N개 주어진다. 해당 알파벳의 종류는 10개 이하이며 같은 알파벳은 같은 숫자를 대입할 때, 주어진 알파벳을 모두 더해 가장 큰 수가 나오는 값을 구하는 문제이다.
코드
input = __import__('sys').stdin.readline
n = int(input())
# 아스키 코드로 변환해 해당 값에 크기를 저장한 배열
arr = [0] * 30
for _ in range(n):
s = input().strip()
s = s[::-1]
# 아스키 값으로 변환한 값을 인덱스로 지정해 arr 리스트에 크기만큼 더하기
for i in range(len(s)):
al = s[i]
arr[(ord(al)-ord('A'))] += 10 ** i
# 오름차순 정렬하여 9부터 1씩 감소시켜 곱해주기
# 알파벳의 종류는 최대 10개 이므로 10번의 연산만 해주면 된다.
arr = sorted(arr, reverse = True)
cnt = 9
for i in range(10):
arr[i] *= cnt
cnt -= 1
# 모두 더한값이 정답
print(sum(arr))
문제 풀이
1. 주어진 단어의 알파벳을 아스키 코드로 변환하여 해당 자릿수 값을 저장. ABC가 주어지면 100A + 10B + C 이므로
각각 arr배열에 인덱스에 맞게 100, 10, 1을 더해주기.
2. arr 배열을 오름차순 정렬
3. 정렬된 배열을 9부터 차례대로 곱해주기
4. 해당 배열을 모두 더한 값이 정답.
'알고리즘 > BOJ' 카테고리의 다른 글
[백준/파이썬] 16236번 아기 상어 (0) | 2022.08.01 |
---|---|
[백준/파이썬] 16953번 A → B (0) | 2022.08.01 |
[BOJ/python] 1439번 뒤집기 (0) | 2022.07.30 |
[BOJ/python] 1946번 신입 사원 (0) | 2022.07.30 |
[BOJ/python] 1931번 회의실 배정 (0) | 2022.07.30 |