[프로그래머스] lv0. 대문자와 소문자, 인덱스 바꾸기

주연·2023년 2월 1일
0

Python 문제 풀이

목록 보기
18/20
post-thumbnail

대문자와 소문자

230201

문제

문제 설명
문자열 my_string이 매개변수로 주어질 때, 대문자는 소문자로 소문자는 대문자로 변환한 문자열을 return하도록 solution 함수를 완성해주세요.

제한사항
1 ≤ my_string의 길이 ≤ 1,000
my_string은 영어 대문자와 소문자로만 구성되어 있습니다.

풀이

def solution(my_string):
    return my_string.swapcase()

이 방법을 구글링해서 찾기 전, 처음에는 for문과 if을 이용하려고 했었다. 문자가 [a-z]면...upper하고 반대면 lower하라는 형식으로 코드를 짜려고 했으나 조금 더 구글링해보니 굳이 코드를 구성하지 않아도 한 번에 해결해주는 내장함수를 발견할 수 있었다.

영문 대소문자 상호 전환

swapcase()를 사용하면 대소문자를 상호 전환할 수 있다.
즉, 대문자는 소문자로 소문자는 대문자로 한 번에 전환할 수 있다.

  • 다른 사람 풀이
def solution(my_string):
    answer = ''

    for i in my_string:
        if i.isupper():
            answer+=i.lower()
        else:
            answer+=i.upper()
    return answer

역시 내가 하려던 코드가 있다

def solution(my_string):
    return ''.join([x.lower() if x.isupper() else x.upper() for x in my_string])

오! 위랑 비슷한데 join을 이용해 할 수도 있다는 것을 알게 되었다. 문자열을 리스트로 변환하여 각 원소에 대해 바꾸는 방법이다.

인덱스 바꾸기

230201

문제

문제 설명
문자열 my_string과 정수 num1, num2가 매개변수로 주어질 때, my_string에서 인덱스 num1과 인덱스 num2에 해당하는 문자를 바꾼 문자열을 return 하도록 solution 함수를 완성해보세요.

제한사항
1 < my_string의 길이 < 100
0 ≤ num1, num2 < my_string의 길이
my_string은 소문자로 이루어져 있습니다.
num1 ≠ num2

입출력 예

my_stringnum1num2result
"hello"12"hlelo"
"I love you"36"I l veoyou"

풀이

def solution(my_string, num1, num2):
    my_list = list(my_string)
    my_list[num1],my_list[num2] = my_list[num2], my_list[num1]
    return ''.join(i for i in my_list)

문자열에서 swap하려니 안 돼서 list로 바꿔한 뒤 다시 문자열로 바꿈..

  • 다른 사람 풀이
def solution(my_string, num1, num2):
    s = list(my_string)
    s[num1],s[num2] = s[num2],s[num1]
    return ''.join(s)

오 나랑 같은데 근데 join안에 for문 안써도 되나보네?!
뭐야 그동안 왜 쓴거지??

profile
공부 기록

0개의 댓글