코딩 테스트 & 문제 해결/코딩 테스트 연습

[준랩] [python] 1082: 특정 대문자를 소문자로 바꾸기

JYUN(sia) 2024. 12. 24. 02:05

 

어려운 문제는 아닌데 저번과 같은 실수를 해서 정리해놓는다.

 

코드1

오류1: 문자열은 Python에서 불변 객체(immutable)

def solution(A,B):
    B=list(map(str,B.split()))
    idx=0
    for i in A:
        if i in B:
            print(i)
            A[idx].lower() # 이렇게 해봤자 A는 안 바뀐다.
        idx+=1
    return A
A=input()
B=input()
print(solution(A,B))

 

string.lower() 함수는 string의 모든 알파벳들을 소문자로 바꾼 문자열을 반환한다.

예를 들어 s1 = "PYTHON" 라는 문자열이 있다고하면 s1.lower() 라는 함수를 이용하면 "PYTHON" 내부의 알파벳들을 모두 각각 소문자로 변환해서 새로운 "python"이라는 문자열을 반환한다. 절대 s1이 바뀌는 게 아니다.

 

def solution(A,B):
    B=list(map(str,B.split()))
    idx=0
    for i in A:
        if i in B:
            A.replace(i,i.lower())
        idx+=1
    return A
A=input()
B=input()
print(solution(A,B))

 

replace()를 사용할 때도 동일하다!!! 

Python에서 문자열은 불변 객체이다. 즉, replace 메소드는 원본 문자열을 변경하지 않고, 변경된 새 문자열을 반환한다.


전체 코드

def solution(A,B):
    B=list(map(str,B.split()))
    for i in A:
        if i in B:
            A=A.replace(i,i.lower())
    return A
A=input()
B=input()
print(solution(A,B))