티끌모아 태산

[백 준/구현] 5622: 다이얼 - 파이썬 본문

백준 문제

[백 준/구현] 5622: 다이얼 - 파이썬

goldpig 2023. 10. 6. 13:11
728x90

https://www.acmicpc.net/problem/5622

 

5622번: 다이얼

첫째 줄에 알파벳 대문자로 이루어진 단어가 주어진다. 단어의 길이는 2보다 크거나 같고, 15보다 작거나 같다.

www.acmicpc.net

구현 문제를 푸는 능력이 많이 부족해서 매일 2~3씩 문제를 풀어보려고 노력하고 있다. 처음에는 코드가 쓰레기라도 돌아가도록 해보자 라는 생각으로 풀고있다. 이번 문제 역시 깔끔하지 못하게 풀었고 다른 사람들의 코드를 보며 개선할 수 있었다.

s = input()
arr = list(s)
#print(arr)
one = 1
two = ['A','B','C']
three = ['D','E','F']
four = ['G','H','I']
five = ['J','K','L']
six = ['M','N','O']
seven = ['P','Q','R','S']
eight = ['T','U','V']
nine = ['W','X','Y','Z']

count = 0
for i in arr:
	if i in two:
		count += 3
	elif i in three:
		count += 4
	elif i in four:
		count += 5
	elif i in five:
		count += 6
	elif i in six:
		count += 7
	elif i in seven:
		count += 8
	elif i in eight:
		count += 9
	elif i in nine:
		count += 10

print(count)

처음에는 위 코드와 같이 다이얼 별로 리스트로 나누워서 입력받은 문자열이 해당 리스트에 있는지 확인하고 count를 하는 방법으로 풀었다. 개선된 코드는 다음과 같다.

#다이얼 별 문자리스트
alpabet_list = ['ABC', 'DEF', 'GHI', 'JKL', 'MNO', 'PQRS', 'TUV', 'WXYZ']
word = input()

count = 0
for unit in alpabet_list:
	for i in unit: # alpabet 리스트에서 각 요소를 꺼내 한 글자씩 분리
		for x in word: # 입력받은 문자를 하나씩 분리
			if i == x: #두 알파벳이 같으면
				count += alpabet_list.index(unit) + 3 # count = count + index + 3
print(count)

다이얼별 통합 문자열 리스트를 하나 선언하고 3중 반복문을 통해서 계산하는 방식이다. 단어의 길이가 2<= 단어 <=15 이기 때문에 3중 반복문을 통해 풀어도 무방하다.

728x90