hojongs / algorithm

A set of source codes to solve algorithm written in python
3 stars 0 forks source link

BOJ 11655. [Bronze1] ROT13 #139

Open hojongs opened 1 year ago

hojongs commented 1 year ago

Problem link

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

Impl

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))

Impl plan

추상화한 문제 이해를 기반으로 알고리즘의 대략적인 구현 계획을 서술한다 구현하기 전에 알고리즘 오류를 파악한다

Impl plan validation

알고리즘의 유효 여부를 구현 전에 검증한다 놓친 알고리즘 오류가 있는지 확인한다

간단한 구현이라서 구현 전에 검증하지 않았음

Self-feedback

구현력

문제를 잘못 이해함 (space가 아니라 알파벳이 아니면 shift하지 않고 그대로) -> 간단한 문제라도 천천히 문제를 읽자

구현이 어렵진 않았는데 edge case 때문에 시간이 꽤 걸림

1등 코드: https://www.acmicpc.net/source/8885053

Optimization

분기문 vs 나머지 연산: 미미한 차이 lambda vs inline: 오히려 inline이 더 느림?

image