Til

Til - 24.03.22 프로그래머스 파이썬

dini_dini 2024. 3. 22. 16:28

>>83 부분 문자열인지 확인하기

 

 문자열 "ana", "ban", "anana", "banana", "n"는 모두 문자열 "banana"의 부분 문자열

 "aaa", "bnana", "wxyz"는 모두 "banana"의 부분 문자열이 아님

문자열 my_string과 target

target이 문자열 my_string의 부분 문자열이라면 1을, 아니라면 0을 return

 

#부분문자열인지 확인 하기

def solution(my_string, target):
    if target in my_string: # 타겟이 마이스트링안에있으면
        return 1
    else:
        return 0

 

 

>>84 뒤에서 5등위로

 

정수로 이루어진 리스트 num_list

num_list에서 가장 작은 5개의 수를 제외한 수들을 오름차순으로 담은 리스트를 return

#뒤에서 5등 위로

def solution (num_list):
    num_list.sort() # 오름차순으로 정렬
    return num_list[5:] #인덱스 5번째부터 반환
 

 

 

>>85 배열의 원소만큼 추가

 

아무 원소도 들어있지 않은 빈 배열 X

양의 정수 배열 arr

arr의 앞에서부터 차례대로 원소를 보면서

원소가 a라면 X의 맨 뒤에 a를 a번 추가하는 일을 반복한 뒤의 배열 X를 return

 

예시 )

 

[5, 1, 4] - >  [5, 5, 5, 5, 5, 1, 4, 4, 4, 4]
[6, 6]  - > [6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6]
[1] - >  [1]

 

#배열의 원소만큼 추가하기
 
def solution(arr):
    answer = []
    for i in arr:
        answer.extend([i] * i) #각 원소에 i번만큼 반복해서 추가
    return answer
       

 

예) i가 3이라면 [i, i, i] 형태로 리스트에 추가

 

 

>> 86 배열의 길이에 따라 다른 연산 하기

 

정수 배열 arr과 정수 n

arr의 길이가 홀수라면 arr의 모든 짝수 인덱스 위치에 n을 더한 배열을,

arr의 길이가 짝수라면 arr의 모든 홀수 인덱스 위치에 n을 더한 배열을 return 

 

->인덱스 위치라는것이 항상 헷갈림 -> 인덱스는 0부터 시작함 

**짝수위치 홀수 위치를 구할시 범위 지정

for i in range(1,len(arr)+1):

-> 이 경우에는 인덱스가 1부터 시작하게 되므로 인덱스와 실제 배열의 인덱스 사이에 1씩 차이가 발생

따라서 인덱스에 접근할 때는 arr[i-1]과 같이 실제 배열의 인덱스에 접근해야함으로 비효율적

 

for i in range(len(arr)):

-> 범위가 0부터 len(arr) - 1까지가 되므로 인덱스가 0부터 시작

 

# # # #오류코드
def solution(arr,n):
    answer = []
    for i in range(len(arr)): #인덱스 위치가 홀짝인지 범위 range지정
        if i%2 == 0: #인덱스위치가 짝수라면
            answer.append(arr[i]+n) #짝수 위치에 n을 더하여 추가
        else : #그렇지 않고 인덱스 위치가 홀수라면
            answer.append(arr[i]+n) #홀수 위치에 n을 더해서 추가
    return answer
# # #오류코드

 

단순하게 범위만 지정해서 짝수 홀수에 n을 더해주기만 했더니 

전부 n이 더해져서 나오는 참사 발생 

 

##수정코드##

 

##생각해야 할것 
#길이 홀수 - 인덱스 짝수 + n
#                - 인덱스 홀수 그대로

#길이 짝수 - 인덱스 홀수 +n
#                - 인덱스 짝수 그대로

 

 
def solution(arr,n):
    answer = []
    for i in range(len(arr)): #배열 길이가 홀짝인지 범위 range지정
        if len[arr]%2 == 1: #길이가 홀수
            if i%2 == 0: #인덱스 위치가 짝수
                answer.append(arr[i]+n) # n더해서 추가
            else: #인덱스 위치가 홀수
                answer.append(arr[i])
        else : #배열길이가 짝수일떄
            if i%2 ==1: #인덱스 위치가 홀수
                answer.append(arr[i]+n) #n을 더해서 추가
            else : #인덱스 위치가 짝수
                answer.append(arr[i]) #홀수 위치 그대로 추가
    return answer
 

 

생각해야할것을 글로 정리해놓고 그대로따라하니 실행이 잘됨