728x90
# 1718번 암호(BronzeII)
line = input()
key = input()
dic = {chr(i+96) : i for i in range(1,27)}
cnt = 0
ans = []
for i in line:
if i == ' ':
ans.append(' ')
if cnt == len(key)-1:
cnt = 0
else:
cnt += 1
continue
if dic[i] - dic[key[cnt]] > 0:
for k,v in dic.items():
if v == dic[i] - dic[key[cnt]]:
ans.append(k)
break
if cnt == len(key)-1:
cnt = 0
else:
cnt += 1
else:
for k,v in dic.items():
if v == dic[i] - dic[key[cnt]] + 26:
ans.append(k)
break
if cnt == len(key)-1:
cnt = 0
else:
cnt += 1
print(''.join(ans))
한땀 한땀 코드를 짜가면서 풀어냈다..!
처음부터 끝까지 내가 디버깅 하면서
풀어내서 아주 뿌듯하고 비슷한 문제는 다시 틀리지 않을 것 같다
정말 운이 좋았던건
처음 제출할 때
예제는 통과해서 우선 제출해봤다
근데 런타임 에러(Index Error)가 발생
그래서 낙심하고
line = 'why wrong'
key = 'nice'
를 입력해봤는데 이 때 Index Error가 발생했다❗
덕분에 line에 공백이 들어올 때도
cnt의 길이를 체크해서 key의 인덱스 범위에 있는지 확인해야한다는 것을 알았다
그냥 cnt +=1 을 하고 넘어가는 것이 아니라
cnt가 문자열 인덱스의 끝과 같다면 다시 0으로 리셋시키고
아니라면 1을 더해주어야 한다
예제에서는
공백이 나오는 위치가
key(=love)의 길이보다 1칸 뒤라서
운좋게 통과된것 같다
if i == ' ':
ans.append(' ')
cnt += 1
continue
.
.
.
▼
if i == ' ':
ans.append(' ')
if cnt == len(key)-1:
cnt = 0
else:
cnt += 1
continue
728x90
'Python(알고리즘,문제풀이) > BOJ(Bronze II)' 카테고리의 다른 글
백준 / 1919번 / 애너그램 만들기 / Python / 구현,문자열, 얕은복사 (0) | 2024.01.16 |
---|---|
백준 / 1212번 / 8진수 2진수 / Python / 수학,구현,문자열 (0) | 2024.01.16 |
백준 / 1673번 / 치킨 쿠폰 / 수학,구현 (0) | 2024.01.09 |
백준 / 1668번 / 트로피 진열 / Python / 구 (0) | 2024.01.08 |
백준 / 1592번 / 영식이와 친구들 / Python / 구현,시뮬레이션 (0) | 2024.01.08 |