코딩테스트

프로그래머스 - 대문자와 소문자 / 인덱스 바꾸기 / 배열의 유사도

sogummi 2023. 4. 3. 14:37

1. 대문자와 소문자

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

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

#입출력 예
my_string	      result
"cccCCC"	     "CCCccc"
"abCdEfghIJ"	"ABcDeFGHij"
def solution(my_string):
    answer = ''
    for i in my_string:
        if i.isupper():
            answer += i.lower()
        else:
            answer += i.upper()

    return answer

=> answer은 문자열 변수이기 때문에 append 대신 += 를 사용해서 각 요소를 추가해줌

2. 인덱스 바꾸기

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

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

#입출력 예
my_string	num1	num2	result
"hello"	1	2	"hlelo"
"I love you"	3	6	"I l veoyou"
def solution(my_string, num1, num2):  # 문자열, 정수, 정수 = input값
    answer = list(my_string) # 문자열 리스트로 변환한 값 answer에 할당
    answer[num1], answer[num2] = answer[num2], answer[num1] #리스트 인덱스 값 교환 
    result = ''.join(answer) #리스트를 다시 문자열로 변환

    return result

인덱스를 서로 교환할 때는 파이썬에서는 

a,b = b,a 라는 식을 작성하면 (b,a)라는 튜플이 생성되고 이 값을 각각 a, b에 대입하게 된다. 
인덱스 교환 또한 튜플과 대입연산자를 이용하면 간단하게 temp변수를 쓰지 않아도 가능\

 

3. 배열의 유사도

#문제 설명
두 배열이 얼마나 유사한지 확인해보려고 합니다. 문자열 배열 s1과 s2가 주어질 때 같은 원소의 개수를 return하도록 solution 함수를 완성해주세요.

#제한사항
1 ≤ s1, s2의 길이 ≤ 100
1 ≤ s1, s2의 원소의 길이 ≤ 10
s1과 s2의 원소는 알파벳 소문자로만 이루어져 있습니다
s1과 s2는 각각 중복된 원소를 갖지 않습니다.

#입출력 예
s1	s2	result
["a", "b", "c"]	["com", "b", "d", "p", "c"]	2
["n", "omg"]	["m", "dot"]	0
def solution(s1, s2): #문자열 배열
    answer = 0
    for i in s1:
        if i in s2:
            answer += 1
    
    return answer

이 문제는 간단하게 s1 배열을 순회하면서 요소가 s2배열에 들어있다면 answer에 1씩 증가시키고 반환