Til

Til 24.03.20 프로그래머스 파이썬(startswith() 함수)

dini_dini 2024. 3. 20. 16:59

>> 75 배열 비교하기

 

이 문제에서 두 정수 배열의 대소관계를 다음과 같이 정의합니다.

두 배열의 길이가 다르다면, 배열의 길이가 긴 쪽이 더 큽니다.
배열의 길이가 같다면 각 배열에 있는 모든 원소의 합을 비교하여 다르다면 더 큰 쪽이 크고, 같다면 같습니다.
두 정수 배열 arr1과 arr2가 주어질 때, 위에서 정의한 배열의 대소관계에 대하여 arr2가 크다면 -1, arr1이 크다면 1, 두 배열이 같다면 0을 return 하는 solution 함수를 작성해 주세요.

 

#배열비교하기

def solution(arr1, arr2):
    sum1 = sum(arr1)
    sum2 = sum(arr2)
   
    if len(arr1) > len(arr2):
        return 1
    elif len (arr1) <len (arr2):
        return -1
    else :
        if sum1 > sum2:
            return 1
        elif sum1 < sum2:
            return -1
        else:
            return 0
 

위 코드는 배열 길이는 한번에 코드가 생각 났는데 코드의 합은 어떻게 합쳐야 하나 고민하다 위에 새로 선언을 해서 추가했는데 다르게 할수도 있을 것 같아서 

 

def solution(arr1, arr2):
   
    if len(arr1) > len(arr2):
        return 1
    elif len (arr1) <len (arr2):
        return -1
    else :
        if sum(arr1) > sum(arr2):
            return 1
        elif sum(arr1) < sum(arr2):
            return -1
        else:
            return 0

 

>>76 부분문자열

 

어떤 문자열 A가 다른 문자열 B안에 속하면 A를 B의 부분 문자열이라고 합니다. 

예를 들어 문자열 "abc"는 문자열 "aabcc"의 부분 문자열입니다.

문자열 str1과 str2가 주어질 때

str1이 str2의 부분 문자열이라면 1을 

부분 문자열이 아니라면 0을 return

 

 
def solution(str1, str2):
    return 1 if str1 in str2 else 0
 

str1이 str2에 들어있으면 1아니면 0

 

 

>> 77 배열에서 문자열 대소문자 변환

문자열 배열 strArr가 주어집니다. 

모든 원소가 알파벳으로만 이루어져 있을 때, 

배열에서 홀수번째 인덱스의 문자열은 모든 문자를 대문자로, 

짝수번째 인덱스의 문자열은 모든 문자를 소문자로 바꿔서 반환하는 solution 함수를 완성해 주세요.

#배열에서 문자열 대소문자변환

def solution(strArr):
    answer = [ ]  # 변환되어 들어갈 리스트 초기화
    for i in range(len(strArr)): # strArr의 길이만큼 반복하는 루트
        if i % 2 == 0: # 짝수번째 라면 
            answer.append(strArr[i].lower())
        else :
            answer.append(strArr[i].upper())
   
    return answer
 

 

 

>>접두사인지 확인하기

 

어떤 문자열에 대해서 접두사는 특정 인덱스까지의 문자열을 의미합니다. 예를 들어, "banana"의 모든 접두사는 "b", "ba", "ban", "bana", "banan", "banana"입니다.
문자열 my_string과 is_prefix가 주어질 때, is_prefix가 my_string의 접두사라면 1을, 아니면 0을 return 하는 solution 함수를 작성해 주세요.

 

 

#접두사인지 확인

def solution(my_string, is_prefix):
    if my_string[:len(is_prefix)] == is_prefix#마이스트링을 프리픽스 길이까지 짤랐을때 프리픽스와 같다면
        return
    else :
        return 0
 

 

엄청 어렵게 생각 했는데 매우 간단하게 구현

 

.startswith()란 함수로도 구현이 가능한듯한데

str.startswith(prefix[, start[, end]])

이런식으로 가능함 

문장이 프레픽스로 스타트지점에서 시작하는지 확인이 가능한 함

맞으면 true 

틀리면 false인데 

 

 파이썬에서 int (true) 는 1

int(false) 는 0

 

따라서

def solution(my_string, is_prefix):
    return int(my_string.startswith(is_prefix))
 

한줄로 리턴해버릴수 있음