언어/Python

파이썬 코딩테스트 DAILY 풀이 도전 [문자열 겹쳐쓰기]

ahgle 2023. 6. 12. 22:51
728x90
반응형

파이썬 코딩테스트 DAILY 풀이 도전 6회차😉 

 

 

문제 링크

https://school.programmers.co.kr/learn/courses/30/lessons/181943

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

문제 설명

문자열 my_string, overwrite_string과 정수 s가 주어집니다. 문자열 my_string의 인덱스 s부터 overwrite_string의 길이만큼을 문자열 overwrite_string으로 바꾼 문자열을 return 하는 solution 함수를 작성해 주세요.

 

 

제한사항
my_string와 overwrite_string은 숫자와 알파벳으로 이루어져 있습니다.
1 ≤ overwrite_string의 길이 ≤ my_string의 길이 ≤ 1,000
0 ≤ s ≤ my_string의 길이 - overwrite_string의 길이

 

 

 

주어진 문장

def solution(my_string, overwrite_string, s):
    answer = ''
    return answer

 

 

 

풀이 : 문자열을 바꾸는 방법에 대해 먼저 알아야 한다.

파이썬에서 문자열을 바꾸는 방법은 여러 가지가 있다.

문자열은 불편(immutable) 자료형이기 때문에 한 번 생성된 문자열은 직접적으로 수정이 불가능하다.

그러나 문자열을 변경하려면 새로운 문자열을 생성하거나 다른 방법을 사용해야 한다.

다음은 문자열을 변경하는 몇 가지 일반적인 방법이다.

 

1.  인덱싱을 사용하여 문자열 일부를 교체하기

특정 인덱스의 문자를 변경하려면 새로운 문자열을 생성해서 교체해야 한다.

 

my_string="Hello, world!"

new_string="my_string[:2] + 'a' + my_string[3:]

print(new_string)      # 출력 : "Healo, world!"

 

*슬라이싱 개념에 대해 알아두자.

ex) my_string[:2] 는 my_string의 처음부터 2번째 문자 이전까지의 부분 문자열을 선택한다.

예를 들어, my_string이 "Hello, world!"인 경우 my_string[:2]는 "He" 가 된다.

문자열의 첫 번째 문자부터 두 번째 문자 이전까지의 부분 문자열을 나타내는 것!

 

2.replace() 메서드를 사용하여 일부 문자열을 대체하기

 replace() 문자열을 사용하여 특정 부분의 문자열을 다른 문자열로 대체할 수 있다.

 

my_string = "Hello, world!"

new_string = my_string.replace("world", "Python")

print(new_string)  # 출력 : "Hello, Python!"

 

 

나의 풀이

def solution(my_string, overwrite_string, s):
    answer = my_string.replace(my_string[s:s+len(overwrite_string)],overwrite_string)
    return answer

 

 

위에서 배운 slice 개념과 replace()함수를 모두 이용했다.

ex)

my_string="He11oWor1d"

overwrite_string="lloWorl"

s=2

answer=HelloWorld

일 때 

 

my_string.replace를 이용해서  s의 값에 해당하는 문자인 1부터  len(overwrite_string) 값인 7 + 2에 해당하는 문자인 1까지, 그러니까 11oWor1을  overwrite_string으로 대체했다.

 

결국 He11oWor1d   --> HelloWorld 으로 변경했다.

 

문제의 의도를 이해하고 풀었다고 생각했는데 왜 채점 시의 다양한 테스트케이스는 통과하지 못하는것일까?!

 

답안

def solution(my_string, overwrite_string, s):
    return my_string[:s] + overwrite_string + my_string[s+len(overwrite_string):]

 

 

본 포스팅은 개인 공부 복기 목적입니다😶

 

The record makes me strong.

728x90