https://www.acmicpc.net/problem/2711
2711번: 오타맨 고창영
첫째 줄에 테스트 케이스의 개수 T(1<=T<=1,000)가 주어진다. 각 테스트 케이스는 한 줄로 구성되어 있다. 첫 숫자는 창영이가 오타를 낸 위치이고, 두 번째 문자열은 창영이가 친 문자열이다. 문자
www.acmicpc.net
- 창영이가 오타를 낸 문장과 오타를 낸 위치가 주어졌을 때, 오타를 지운 문자열을 출력하기
- 창영이는 오타를 반드시 1개만 냄
- 입력
- 첫째 줄에 테스트 케이스의 개수 T(1<=T<=1,000)가 주어짐
- 각 테스트 케이스는 한 줄로 구성되어 있음
- 첫 숫자는 창영이가 오타를 낸 위치이고, 두 번째 문자열은 창영이가 친 문자열
- 문자열의 가장 첫 문자는 1번째 문자이고, 문자열의 길이는 80을 넘지 않고, 대문자로만 이루어져 있음
- 오타를 낸 위치는 문자열 길이보다 작거나 같음
- 출력
- 각 테스트 케이스에 대해 오타를 지운 문자열을 출력
- 시간 제한: 1초
- 메모리 제한: 128 MB
"""
입출력 예시)
4
4 MISSPELL
1 PROGRAMMING
7 CONTEST
3 BALLOON
-> MISPELL
ROGRAMMING
CONTES
BALOON
"""
## 의사코드 ##
# 오타를 낸 문자를 제거
# 문자열.replace(문자열[int(인덱스)-1], '')
첫 번째 시도
t = int(input())
for _ in range(t):
idx, s = input().split()
print(s.replace(s[int(idx)-1], ''))
-> replace() 사용 시 변환하려는 문자가 문자열 내에서 모두 변환되어버림 (오타 낸 문자와 동일한 문자가 있는 경우 틀림)
통과한 코드
t = int(input())
for _ in range(t):
idx, string = input().split()
string = list(string)
string.pop(int(idx)-1)
print(''.join(string))
-> 문자열을 리스트로 변환 후, pop(위치)로 오타 낸 문자만 제거
참고)
https://star7sss.tistory.com/102
[구현] 백준 2711 오타맨 고창영 - Python
[ Contents ] 1. 문제 (링크 참조) 2711번: 오타맨 고창영 첫째 줄에 테스트 케이스의 개수 T(1
star7sss.tistory.com