[Hackerrank] Python - 17 Mutations

후유카와·2024년 11월 27일

Hackerrank

목록 보기
57/59

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.

profile
안녕하세요! 저는 전자공학을 전공하며 하드웨어와 소프트웨어 모두를 깊이 있게 공부하고 있는 후유카와입니다. Verilog HDL, C/C++, Java, Python 등 다양한 프로그래밍 언어를 다루고 있으며, 최근에는 알고리즘에 대한 학습에 집중하고 있습니다. 기술적인 내용을 공유하고, 함께 성장할 수 있는 공간이 되기를 바랍니다. 잘못된 내용이나 피드백은 언제나 환영합니다! 함께 소통하며 더 나은 지식을 쌓아가요. 감사합니다!

0개의 댓글