파이썬 백준 5단계 문자열 알고리즘 문제를 풀어보았습니다.
# 27866 문자와 문자열
- 문자열을 인덱스로 출력하는 문제입니다.
S = input()
i = int(input())
print(S[i-1])
파이썬은 0부터 인덱스가 시작하기 때문에 -1을 하였습니다.
문제는 쉽기 때문에 한 번에 풀었습니다.
# 2743 단어 길이 재기
- 문자열의 길이를 출력하는 문제입니다.
print(len(input()))
input()으로 입력할 시에 자동으로 문자열이 되기 때문에 len()으로 길이를 출력했습니다.
쉬운 문제여서 한 번에 맞췄습니다.
# 9086 문자열
- 문자열의 첫 문자와 마지막 문자를 출력하는 문제입니다.
T = int(input())
for i in range(T):
a = input()
print(a[0] + a[-1])
문자열의 인덱스 [0]과 [-1]로 처음과 마지막을 출력했습니다.
쉬운 문제여서 한 번에 맞췄습니다.
# 11654 아스키 코드
- 문자의 아스키 코드를 출력하는 문제입니다.
print(ord(input()))
ord()함수를 사용해서 아스키 코드를 출력했습니다.
- ord(c)
- 유니코드 문자가 주어지면 해당 문자의 유니코드를 나타내는 정수를 반환합니다.
- 반대는 chr()
출력을 처음에 잘못해서 한 번 틀렸습니다.
# 11720 문자의 합
- 입력한 숫자를 각자 합하는 문제입니다.
N = int(input())
Num = input()
sum = int()
for i in range(N):
sum += int(Num[i])
print(sum)
sum 변수에 각 숫자를 계속해서 더하는 for 반복문을 만들어서 출력했습니다.
어려운 문제가 아니기에 한 번에 맞췄습니다.
# 10809 알파벳 찾기
- 각 알파벳이 어디에 있는지 출력하는 문제입니다.
S = input()
string = 'abcdefghijklmnopqrstuvwxyz' # 알파벳 문자열
li = []
for i in string:
if i in S:
li.append(S.index(i)) # 알파벳이 있으면 index
else:
li.append(-1) # 알파벳이 없으면 -1
print(*li)
for 반복문가 조건문을 사용해서 인덱스와 -1을 넣고 출력했습니다.
출력하는 방법을 잘못 작성해서 한 번 틀렸습니다.
# 2675 문자열 반복
- 숫자 N 만큼 해당 문자를 계속 반복하여 출력하는 문제입니다.
T = int(input())
for i in range(T):
R, S = input().split()
for j in range(len(S)):
print(S[j]*int(R), end ='')
print()
이중 반복문을 사용해서 해당 문자를 반복하여 출력했습니다.
문제는 어렵지 않게 한 번에 풀었습니다.
# 1152 단어의 개수
- 문자열에 단어가 몇 개 있는지 출력하는 문제입니다.
string = list(input().split())
print(len(string))
split() 함수를 사용해서 string 리스트에 저장한 후 길이를 출력했습니다.
어렵지 않게 한 번에 맞췄습니다.
# 2908 상수
- 두 숫자를 뒤집은 후 큰 숫자를 출력하는 문제입니다.
A, B = input().split()
if A and B != '0':
A = A[::-1]; B = B[::-1] # 슬라이싱으로 뒤집음
print(max(A, B))
슬라이싱으로 뒤집은 후 max() 함수로 큰 숫자를 출력했습니다.
문제는 어렵지 않게 한 번에 맞췄습니다.
# 5622 다이얼
https://www.acmicpc.net/problem/5622
5622번: 다이얼
첫째 줄에 알파벳 대문자로 이루어진 단어가 주어진다. 단어의 길이는 2보다 크거나 같고, 15보다 작거나 같다.
www.acmicpc.net
문제가 너무 길고 한 번에 이해하기 쉽지 않았습니다.
string = list(input())
phonenum = ['', 'ABC', 'DEF', 'GHI', 'JKL', 'MNO', 'PQRS', 'TUV', 'WXYZ', '0']
k = int()
for i in range(len(string)):
for j, st in enumerate(phonenum): # 인덱스와 내용을 j, st에 넣음
if string[i] in st:
k += j
k += 2
print(k)
k += 2를 어디에 넣어야될 지 고민이 많이 되더라고요.
제가 여지껏 푼 문제 중에선 가장 오래걸린 것 같습니다.
- enumerate(iterable, start = 0)
- iterable은 sequence, iterator or iteration을 지원하는 객체여야한다.
- iterator는 반복 가능한 객체에서 원소를 차례대로 꺼낼 수 있는 객체를 말합니다.
문제는 한 번에 맞췄습니다.
# 11718 그대로 출력하기
- 문자열을 문자열 그대로 출력하는 문제입니다.
while True:
try:
print(input().strip())
except EOFError:
break
제가 문제를 제대로 이해하지 못하고 오래걸린 문제입니다.
이 문제를 풀면서 EOFError를 처음 알았습니다.
- EOFError (End Of File Error)
- 파일이나 표준 입력에서 더 이상 읽을 데이터가 없을 때 발생하는 오류
- input() 함수에서 사용자 입력을 받을 때 사용자가 아무것도 입력하지 않고 종료 시 발생
- 파일 또는 입력 소스가 끝난 것으로 간주
EOFError를 어떻게 처리하는 지 여러 방법들을 넣다 보니 4번이나 틀렸습니다.