Open hojongs opened 1 year ago
https://www.acmicpc.net/problem/11655
import sys readl = sys.stdin.readline UPPER_A = 65 LOWER_A = 97 ROT = 13 s = readl().rstrip() buf = [] is_alphabet = lambda code, base: base <= code < base + ROT * 2 for ch in s: origin = ord(ch) if is_alphabet(origin, UPPER_A): shifted = origin + ROT if not is_alphabet(shifted, UPPER_A): shifted -= 26 elif is_alphabet(origin, LOWER_A): shifted = origin + ROT if not is_alphabet(shifted, LOWER_A): shifted -= 26 else: shifted = origin buf.append(chr(shifted)) print(''.join(buf))
추상화한 문제 이해를 기반으로 알고리즘의 대략적인 구현 계획을 서술한다 구현하기 전에 알고리즘 오류를 파악한다
알고리즘의 유효 여부를 구현 전에 검증한다 놓친 알고리즘 오류가 있는지 확인한다
간단한 구현이라서 구현 전에 검증하지 않았음
문제를 잘못 이해함 (space가 아니라 알파벳이 아니면 shift하지 않고 그대로) -> 간단한 문제라도 천천히 문제를 읽자
구현이 어렵진 않았는데 edge case 때문에 시간이 꽤 걸림
1등 코드: https://www.acmicpc.net/source/8885053
분기문 vs 나머지 연산: 미미한 차이 lambda vs inline: 오히려 inline이 더 느림?
Problem link
https://www.acmicpc.net/problem/11655
Impl
Impl plan
Impl plan validation
간단한 구현이라서 구현 전에 검증하지 않았음
Self-feedback
구현력
문제를 잘못 이해함 (space가 아니라 알파벳이 아니면 shift하지 않고 그대로) -> 간단한 문제라도 천천히 문제를 읽자
구현이 어렵진 않았는데 edge case 때문에 시간이 꽤 걸림
1등 코드: https://www.acmicpc.net/source/8885053
Optimization
분기문 vs 나머지 연산: 미미한 차이 lambda vs inline: 오히려 inline이 더 느림?