⌨️ Algorithms/백준
[Python] 백준 6321번_IBM 빼기 1
monzheld
2023. 5. 20. 22:42
https://www.acmicpc.net/problem/6321
6321번: IBM 빼기 1
첫째 줄에 컴퓨터의 개수 n이 주어진다. 다음 줄부터 n개의 줄에는 컴퓨터의 이름이 주어진다. 컴퓨터의 이름은 최대 50글자이며, 알파벳 대문자로만 이루어져 있다.
www.acmicpc.net
- HAL은 휴리스틱 알고리즘 (Heuristic ALgorithm)의 약자
- 하지만, HAL의 각 글자를 알파벳 다음 순서로 쓰면 IBM이 되기 때문에, IBM과 연관이 있다고 믿는 사람이 매우 많음
- 컴퓨터의 이름이 주어졌을 때, 각 글자를 알파벳 다음 순서로 써서 출력하기
- 입력
- 첫째 줄에 컴퓨터의 개수 n이 주어짐
- 다음 줄부터 n개의 줄에는 컴퓨터의 이름이 주어짐
- 컴퓨터의 이름은 최대 50글자이며, 알파벳 대문자로만 이루어져 있음
- 출력
- 입력으로 주어진 컴퓨터 이름에 대해서, 한 줄에 하나씩 각 글자를 알파벳 다음 순서로 써서 출력
- 각각의 컴퓨터 이름 사이에는 빈 줄을 하나씩 출력
- 알파벳 Z의 다음 순서는 A
- 시간 제한: 1초
- 메모리 제한: 128 MB
"""
입출력 예시)
2
HAL
SWERC
-> String #1
IBM
String #2
TXFSD
"""
## 의사코드 ##
# 아스키코드로 다음 알파벳으로 변환
# string[j] = chr(ord(string[j]) + 1)
# 알파벳 Z는 A로 변환
# if string[j] == 'Z':
# string[j] = 'A'
통과한 코드
n = int(input())
for i in range(n):
string = list(input())
for j in range(len(string)):
# 알파벳 Z의 다음 순서는 A
if string[j] == 'Z':
string[j] = 'A'
else:
# 다음 순서의 알파벳으로 변환
string[j] = chr(ord(string[j]) + 1)
print(f'String #{i+1}')
print(''.join(string))
# 각 컴퓨터 이름 사이에 빈 줄 하나 출력
if i+1 == n:
break
else:
print()
- ord('str')
- 문자열을 아스키코드 값으로 변환
- chr(int)
- 아스키코드를 문자열로 변환
- 알파벳의 순서에 따라 아스키코드의 숫자가 1씩 증가