새소식

⌨️ Algorithms/백준

[Python] 백준 6321번_IBM 빼기 1

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씩 증가

 

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다!