Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 27 | 28 | 29 |
30 | 31 |
Tags
- 대체 암호화
- JoCoding
- 백준
- 욱제는 효도쟁이야!!
- 비연결형 통신
- 통나무 건너기
- 동적 계획 알고리즘
- 시저 암호화
- 사과 담기 게임
- 그리디 알고리즘
- Greedy
- Pop
- 코딩 테스트
- 컬럼 암호화
- 키워드 암호화
- 구현
- 문자 변환표
- 5와 6의 차이
- 한빛미디어
- 나동빈
- 거스름돈
- 파이썬
- 컴퓨터 네트워크
- 소가 길을 건너간 이유3
- 2 + 1 세일
- 전자 메일
- DES 알고리즘
- ZOAC 2
- 세탁소 사장 동혁
- 위치 암호화
Archives
- Today
- Total
주니어로서의 백 걸음, 개발자로서의 한 걸음
[백준 18238] ZOAC 2 파이썬 문제 풀이 본문
문제 풀이: 해당 문제는 하나의 문자를 입력받았을 때 유니코드 정수로 반환해 주는 함수인 ord() 함수를 사용해야 한다.
ex) ord('a')를 넣으면 정수 97을 반환한다.
반대로 정수를 입력 받았을 때 유니코드 문자로 반환해 주는 함수인 chr() 함수도 있다.
ex) chr(97) 을 넣으면 문자 'a'가 반환된다.
처음 화살표는 'A'를 가리키기 때문에 변수 first의 초기 값을 'A'로 설정한다.
문자를 하나씩 가져와서 왼쪽으로 돌려야 최소 값이 나오는지 오른쪽으로 돌려야 최소가 나오는지를 계산한다.
a = input()
first = 'A'
cnt = 0
for i in a:
left = ord(first) - ord(i)
right = ord(i) - ord(first)
if left < 0:
left += 26
elif right < 0:
right += 26
cnt += min(left, right)
first = i
print(cnt)
입력받은 문자열을 'A'의 아스키코드 값으로 빼준 경우는 왼쪽으로 돌려야 하는 경우
'A'의 아스키 코드아스키코드 값을 입력받은 문자열의 아스키코드 값으로 빼준 경우는 오른쪽으로 돌려야 하는 경우이다.
만약 left 값과 right 값이 0보다 작다면 26을 더한다
즉 A에서 Z로 가기 위해서 왼쪽으로 1번 돌리는 것과 오른쪽으로 25번 돌리는 것 중에서 최소인 값을 cnt에 더해주는 것이다.
'Python > 백준 문제풀이' 카테고리의 다른 글
[백준 11508] 2 + 1 세일 파이썬 문제 풀이 (0) | 2023.07.24 |
---|---|
[백준 2828] 사과 담기 게임 파이썬 문제 풀이 (0) | 2023.07.23 |
[백준 13904] 과제 파이썬 문제 풀이 (0) | 2023.07.23 |
[백준 11497] 통나무 건너기 파이썬 문제 풀이 (0) | 2023.07.22 |
[백준 2810] 컵홀더 파이썬 문제 풀이 (0) | 2023.07.22 |