SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
<나의 풀이>
알파벳을 숫자로 변환한다는 것만 보고 아스키코드가 생각이 났다.
문자 인코딩 : 문자열이나 기호를 컴퓨터에 이용하기 위해 코드화, 부호화하는 과정
이 표를 보면 A는 65에 해당한다.
이 관계를 잘 활용하면 될 듯하다.
또한 파이썬 내장 함수를 활용해야 한다.
[파이썬 문자열 변환 내장 함수]
1. ord(문자열)
: 문자열 -> 아스키코드
2. chr(숫자)
: 아스키코드 -> 문자열
문제에서 주어지는 입력값을 문자열이라고 할 때, 이를 숫자로 변환해주는 코드를 작성하면 된다.
이때 A는 1로 출력이 돼야 함을 기억해야 한다.
A 문자열을 아스키코드로 변환하면 65이니깐, 여기서 64를 빼주면 된다.
이때 중요한 것은 대문자 A와 소문자 a의 아스키코드가 다르다는 것이다.
문제에서 특별한 조건이 없고, 입력값이 대문자들로 구성되어있으니 소문자는 입력되지 않는다고 가정해야겠다.
그런데 조금 더 생각해야 할 부분이 있다.
입력되는 문자열의 각 알파벳들을 따로따로 변환하고 연산해야 하는 것이다.
이를 위해서 우리는 for문을 사용해야 한다.
H = input()
for i in H:
다음과 같이 작성하는 것이 어색하다.
그 이유는 그 동안은 range나 숫자들의 리스트를 탐색하는 for문을 사용했었기 때문이다.
그런데 위와 같이 문자열 리스트를 탐색한다면 어떻게 될까?
답은 문자 하나하나 탐색한다는 것이다.
따라서 ABCD가 들어올 경우
i는 A부터 D까지 탐색을 하는 것이다.
이를 활용한다면 입력되는 문자열의 각 알파벳에 대해서 제어 및 연산을 할 수 있다.
다음과 같이 코드를 작성하고 실행해보자.
H = input()
for i in H:
print(i)
A
B
.
.
.
Y
Z
이처럼 각 문자에 대해서 탐색을 하는 것을 확인했다.
이제 이를 주어진 조건처럼 숫자로 변환하여 빈칸을 두고 출력해보자.
위에서 언급한 것처럼 1) 아스키코드로 변환한 후 2)'-64' 연산을 추가하고 공백을 넣어줘야 한다.
H = input()
for i in H:
h = ord(i)
print(h-64,end=' ')
이를 실행하면 다음과 같다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
새로운 개념인 아스키코드와 이를 변환해주는 함수에 대해서 공부할 수 있었다.
또한 for문에서 i를 탐색할 때 문자열도 활용이 가능하다는 것을 배웠다.
알찬 문제였다.
+) 추가로 만약 소문자도 들어올 수 있다면, 지난 문제에서 배운 isupper(), islower()를 활용하여 조건문으로 작성하면 어떨까 싶다.
for문 안에서 각 문자가 대문자인지 소문자인지 판별한 후 각 경우에 대해 연산을 해주는 것이다.
'개발 > SWEA (D1) 문제 풀이' 카테고리의 다른 글
SW Expert Academy - 2058. 자릿수 더하기(D1) (0) | 2022.11.11 |
---|---|
SW Expert Academy - 2056. 연월일 달력(D1) (0) | 2022.11.10 |
SW Expert Academy - 2047. 신문 헤드라인(D1) (0) | 2022.11.10 |
SW Expert Academy - 2046. 스탬프 찍기(D1) (0) | 2022.11.10 |
SW Expert Academy - 2043. 서랍의 비밀번호(D1) (0) | 2022.11.08 |
댓글