반응형
밑의 링크는 CodeUp에서의 문제 링크입니다.
주의해야 할 점
readline을 사용해서 입력하므로 맨 끝에 \n은 떼야한다는 것을 잊으면 안 됩니다.
출력 형식도 주의해야 합니다.
print를 그냥 사용하면 다음 출력을 위해 자동으로 다음 줄로 내립니다.
그런데 이번 문제에서는 다음 영어 소문자를 출력할 때, 한 칸만 띄어야 합니다.
이번 문제에서 영어 소문자를 순서대로 무언가를 하는 것처럼,
영어 대문자를 순서대로, 혹은 숫자를 순서대로 처리를 하는 것은 다른 문제에서도 쉽게 볼 수 있습니다.
그때는 이번 문제처럼 ord, chr 함수를 자주 사용하시게 될 텐데 잊지 않으셔야 합니다.
밑의 링크들은 ord, chr 내장 함수에 대해서 제 블로그에서 정리한 내용들입니다.
밑의 링크들은 ord, chr 내장 함수를 사용했던 다른 알고리즘 문제들입니다.
다른 문제들도 더 있는데 블로그 내에서 ord이나 chr로 검색하시면 됩니다.
생각한 풀이 과정
- 영어 소문자 1개를 입력합니다. 맨 끝의 \n은 떼어줍니다.
- 입력한 영어 소문자의 다음 영어 소문자에 해당하는 유니코드를 구하고 변수 next_eng_char_code에 저장합니다.
- a부터 입력한 영어 소문자의 유니코드를 차례로 저장할 변수 alphabet_code를 선언합니다. 처음에는 a의 유니코드로 초기화합니다.
- alphabet_code에 저장되어 있는 유니코드와 next_eng_char_code에 저장되어 있는 유니코드가 다르면 계속 반복하는 반복문을 만듭니다.
- alphabet_code에 저장된 유니코드에 해당하는 문자를 출력합니다. 출력하고 나서 다음 줄로 바꾸지 않고 다음 한 칸만 띄어줍니다.
- 다음 영어 소문자를 출력하기 위해 alphabet_code에 저장된 유니코드에 1을 더해줍니다.
- alphabet_code에 저장되어 있는 유니코드와 next_eng_char_code에 저장되어 있는 유니코드가 같아질 때까지 과정 5 ~ 과정 6을 반복합니다.
제출한 파이썬 코드
# readline을 사용하기 위해 import합니다.
from sys import stdin
# 영어 소문자 1개를 입력합니다.
# 맨 끝의 \n은 떼어줍니다.
eng_char = stdin.readline().rstrip()
# 입력한 영어 소문자의 다음 영어 소문자에 해당하는 유니코드를 저장하는 변수를 선언합니다.
next_eng_char_code = ord(eng_char) + 1
# 영어 소문자 유니코드 숫자를 a의 유니코드부터 입력한 영어 소문자의 유니코드까지
# 차례로 저장할 변수를 선언합니다.
# 처음에는 a의 유니코드로 초기화합니다.
alphabet_code = ord('a')
# 현재 영어 소문자의 유니코드와 next_eng_char_code에 저장된 유니코드가 같지 않으면 계속 반복합니다.
while alphabet_code != next_eng_char_code:
# alphabet_code에 저장된 유니코드에 해당하는 영어 소문자를 출력합니다.
# 출력 형식에 맞게 다음 줄로 내리지 않고 다음 한 칸을 띄어줍니다.
print(chr(alphabet_code), end=' ')
# 다음 영어 소문자를 표현하기 위해 alphabet_code에 저장된 유니코드에 1을 더합니다.
alphabet_code += 1
제출 결과
※ 궁금한 부분, 이상한 점 및 오타는 댓글에 부탁드립니다.
※ 더 효율적이고 빠른 정답을 환영합니다.
반응형
댓글