[백준 파이썬 5622번]다이얼★2중리스트화,IN 주목하기★VER2.0★
2022. 9. 15. 15:28
728x90
반응형
import sys
while True:
alpha = list(map(str,sys.stdin.readline().rstrip())) #alpha 객체에 단어를 string형태로 받아본다.
print('alpha : ', alpha)
#ABCDE 입력 ==> ['A','B','C','D','E']
alpha = sorted(alpha) #alpha의 요소들을 정렬
if len(alpha)<2 or len(alpha)>155:
print("알파벳의 길이는 2보다 크거나같고 15보다 작거나 같다.")
else:
break
long2 ,dials, four , five = [], [] , [] , []
for k in range(65,91): #아스키코드 65 : 'A' 아스키코드 91: 'Z'
long2.append(chr(k))
print('long2 : ', long2)
#long2 : ['A' , 'B' , 'C' ~~~~~~~ , 'Z']
q = 0
for j in range(5):
dials.append(long2[q:q+3]) #long에 저장되어있는 요소를 3개씩 저장시킨다.
#2번다이얼('A',B','C') ~ 6번다이얼
q+=3 #인덱스 3씩 증가
for w in range(1):
dials.append(long2[q:q+4])
q+=4 #7번다이얼('P','Q','R','S')
for l in range(1):
dials.append(long2[q:q+3])
q+=3
#8번다이얼('T','U','V')
for p in range(1):
dials.append(long2[q:q+4])
#9번다이얼('W','X','Y','Z')
print('dials : ', dials)
#2중 리스트
for i in range(len(dials)): #len(dials) = 8
sum = 0 #
for k in range(len(alpha)): #len(alpha) = 입력된 문자열들의 길이
if alpha[k] in dials[i]: #dials 리스트에 입력된 문자열의 문자가 있다면
sum += 1 #더해라
four.append(sum) #four리스트에 sum값들 저장해라
print('four : ' ,four)
sum2,f =0, 0
for e in range(len(four)): #len(four) = 8
sum2 += four[e]*(f+3) #문자열이 들어있는 개수 * (걸리는초)
f+=1
print(sum2)
alpha 리스트에는 입력한 문자열의 문자 하나하나를 string화 하여 저장
long2 리스트에는 chr()함수와 for문을 활용하여 알파벳들을 저장시켰다.
dials 리스트에는 for문의 4가지 경우를 만들어 long2리스트를 슬라이싱하여 dials안에 2중리스트가 되도록 한다.
four 리스트에는 입력한 문자열 리스트의 인덱스순서에 따라 문자가 dials 인덱스순서에 따른 리스트에 존재하면
sum2 변수에 문자열이 들어있는 개수 * (걸리는 초)
Version 2.0
import sys
A = list(str(sys.stdin.readline().rstrip()))
# print(ord('A'))
# print(ord('Z'))
alphabet_1= []
alphabet_2= []
dial , dial_2= [] , []
for i in range(65,80):
alphabet_1.append(chr(i))
for i in range(80,91):
alphabet_2.append(chr(i))
for i in range(5):
dial.append(alphabet_1[i*3:(i+1)*3])
for i in range(1):
dial.append(alphabet_2[i*4:(i+1)*4])
dial.append(alphabet_2[4:7])
dial.append(alphabet_2[7:11])
print("dial:" , dial)
res = 0
for j in range(len(A)):
for i in range(len(dial)):
if A[j] in dial[i] :
res+= (3+i)
break
print("res:" , res)
728x90
반응형
'Python(백준) > 문자열' 카테고리의 다른 글
★리스트 mapping★숫자의 합★rstrip()함수★VER3.0★[백준 파이썬 11720번] (0) | 2022.12.26 |
---|---|
★코테에서 꼭 쓰이는★ 헷갈리는 문자열 정리 (0) | 2022.09.28 |
[백준 파이썬 11654번]아스키 코드 ★ord(),chr()함수 이해★VER2.0 (0) | 2022.09.15 |
[백준 파이썬 10809번]알파벳 찾기★rstrip(), index() 함수★VER2.0 (1) | 2022.09.15 |
[백준 파이썬 2908번]상수★2중리스트화 주목하기★슬라이싱★VER2.0 (0) | 2022.09.15 |