jyamethyst21 님의 블로그

백준 2711번 - '오타맨 고창영' (PYTHON 풀이) 본문

CODING 💻

백준 2711번 - '오타맨 고창영' (PYTHON 풀이)

jyamethyst21 2026. 4. 17. 01:23

문제:

 

테스트 케이스 수를 입력받고 해당 케이스별로 오타의 위치와 문자열을 입력받는다. 그 다음 오타의 위치에 해당하는 내용을 지우고 다시 수정된 문자열을 출력하면 된다.

 

풀이:

N = int(input())
for i in range(N):
    conn1, conn2 = map(str, input().split())
    print(conn2[:int(conn1)-1]+conn2[int(conn1):])

N에 테스트 케이스 개수를 입력받고, 해당 수만큼 반복문을 돈다. 그 다음 conn1에는 문자를 지울 위치, conn2에는 문자열을 입력받아서 저장한다.

 

해당 문제는 슬라이싱을 활용해서 바로 출력하면 되는데, 입력받은 conn1은 1을 시작으로 위치를 입력받는 것이지만, 원래 파이썬 인덱스는 0부터 시작이므로 1을 빼주어야 한다. 그 다음 삭제하고자 하는 위치보다 -1인 위치부터 출력해줘야 하므로 원래대로라면 -2의 구간을 처음 출력해야 하지만, 슬라이싱 자체가 [start:end-1]이기 때문에 -2가 아닌 -1만 해줘도 된다. 

즉, 여기까지 과정을 거치면 입력값이 3 APPLE 일 때, AP가 출력될 것이다.

 

그 다음 문자열 한 자리를 삭제한 다음 바로 뒷부분을 그대로 출력해줘야 하므로 삭제할 문자열 자릿수+1부터 끝까지를 의미하는 conn[int(conn1):]을 작성하면 된다. (마찬가지로 인덱스는 0부터 시작이므로 +1을 해줄 필요가 없이 입력받은 대로 인덱스를 지정해주면 됨, 입력값 자체가 +1이기 때문)

추가로, conn1 변수를 int로 변환한 아유는 최초 입력받을 때 str(문자열)형태로 받았기 때문에 인덱싱을 위해서 숫자형태로 바꾼 것이다. 여기까지의 과정을 거치면 문제에서 요구하는 조건을 충족할 수 있게 된다.