본문 바로가기
알고리즘/백준-Python

[Python]백준 5622 다이얼

by sweesweet 2021. 11. 22.

처음 짰을 때는 이렇게 짰었다. 

list에 각 알파벳을 넣고,

리스트의 길이만큼 for문을 돌린다음, 3으로 나눈 나머지의 값+2의값을 리스트에 추가하였다.(svyz제외)

이게 코드가 길어지니까 생각도 많아져서 계속 꼬이게 되더라

a=input()
li=['A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z']
lis=[]
p=0
for i in range(len(li)):
    for ii in li:
        if (li.index(ii)+1)//3==i and (li.index(ii)+1)%3==1:
            if ii=='S':
                lis.append(i+1)
            elif ii=='V':
                lis.append(i+1)
            elif ii=='Y':
                lis.append(i+1)
            else:
                lis.append(i+2)
        elif (li.index(ii)+1)//3==i and (li.index(ii)+1)%3==2:
            if ii=='Z':
                lis.append(i+1)
            else:
                lis.append(i+2)
        elif (li.index(ii)+1)//3==i and (li.index(ii)+1)%3==0:
            lis.append(i+1)
for i in a:
    for ii in li:
        if i ==ii:
            p=p+lis[li.index(ii)]
print(p+len(a))

엄청 오래걸렸었고....꼬여서 돌아버릴것 같았다.

다 풀고 다른사람의 코드를 봤을때 아래와같이 그림처럼 묶어서 리스트를 만들면 된다는 것에 충격받았다.

두번째 코드보고 짠 경우는 이렇다

a=input()
li=['ABC','DEF','GHI','JKL','MNO','PQRS','TUV','WXYZ']
lis=[]
p=0
for i in li:
    for ii in i:
        for k in a:
            if ii==k:
                p=p+(li.index(i)+3)
print(p)

걸린 시간은 동일하지만 훨씬 짧다.

가끔 나의 무지함에 자증이난다.. 껄껄껄

'알고리즘 > 백준-Python' 카테고리의 다른 글

[Python]백준 3052번: 나머지  (0) 2021.11.24
[Python] 백준 1173번 : 운동  (0) 2021.11.23
[Python]백준 1159번 : 농구경기  (0) 2021.11.23
[Python]백준 1075번:나누기  (0) 2021.11.22
백준 2577번: 숫자의 개수  (0) 2021.11.15