본문 바로가기

프로그래밍 언어/Python

[Hackerrank] 17. Mutations

17. Mutations

[ 난이도: Easy | 분야: Strings ]

1. 과제

과제 설명

파이썬에서는 리스트는 수정 가능하고 튜플은 수정 불가능하다.

이 기능에 대해 아래 예시를 통해 살펴보자.

아래 예시에서는 수정할 수 없는 문자열이 주어지고, 문자열을 수정하는 것이 목적이다.

 

예시

string = "abracadabra"

이 때 문자열은 인덱스를 통해 접근할 수 있다:

print string[5]

출력: a

여기서 값을 바꾸면 어떻게 될까요?

>>> string[5] = 'k' 
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'str' object does not support item assignment

에러가 발생한다. 에러 없이 이 작업을 하려면 어떻게 해야 하는가?

- 한 가지 해결책은 문자열을 리스트로 변환한 다음 값을 바꾸는 것이다.

 

예시

>>> string = "abracadabra"
>>> l = list(string)
>>> l[5] = 'k'
>>> string = ''.join(l)
>>> print string
abrackdabra

- 다른 방법은 문자열을 잘라낸 다음 합치는 것이다.

>>> string = string[:5] + "k" + string[6:]
>>> print string
abrackdabra

 

Task

주어진 문자열을 읽고, 주어진 인덱스에 값을 바꾸고 수정된 문자열을 출력하라.

 

함수 설명

아래 에디터의 mutate_string 함수를 완성하라.

mutate_string은 다음 파라미터를 갖는다:

- string string: 바꿀 문자열

- int position: 문자를 집어 넣을 인덱스

- string character: 집어 넣을 문자

 

반환값

- string: 수정된 문자열

 

입력 형식

첫 번째 줄은 문자열, string을 갖는다.

두 번째 줄은 인덱스를 의미하는 정수 position을 집어 넣을 문자인 character를 공백으로 구분하여 가지고 있다.

 

입력 예시

STDIN           Function
-----           --------
abracadabra     s = 'abracadabra'
5 k             position = 5, character = 'k'

 

출력 예시

abrackdabra

 

문제

def mutate_string(string, position, character):
    return

if __name__ == '__main__':
    s = input()
    i, c = input().split()
    s_new = mutate_string(s, int(i), c)
    print(s_new)
더보기

정답

def mutate_string(string, position, character):
    l = list(string)
    l[position] = character
    string = ''.join(l)
    return string

if __name__ == '__main__':
    s = input()
    i, c = input().split()
    s_new = mutate_string(s, int(i), c)
    print(s_new)

 

 

 

 

 

©️Hackerrank. All Rights Reserved.

'프로그래밍 언어 > Python' 카테고리의 다른 글

[Hackerrank] 19. String Validators  (0) 2024.03.11
[Hackerrank] 18. Find a String  (0) 2024.03.08
[Hackerrank] 16. What's Your Name?  (0) 2024.03.07
[Hackerrank] 15. String Split and Join  (0) 2024.03.07
[Hackerrank] 14. sWAP cASE  (0) 2024.03.06