[Python] 프로그래머스 Lv0 - 4

구준희·2023년 8월 6일
0

알고리즘

목록 보기
7/31
post-thumbnail
  1. 배열 만들기 5
def solution(intStrs, k, s, l):
    answer = []
    for i in intStrs:
        if int(i[s:s+l]) > k:
            answer.append(int(i[s:s+l]))
    return answer
  1. 부분 문자열 이어 붙여 문자열 만들기
def solution(my_strings, parts):
    answer = ''
    for i,[a,b] in enumerate(parts):
        answer += my_strings[i][a:b+1]
    return answer
  1. 문자열 뒤의 n 글자
def solution(my_string, n):
    answer = ''
    for i in my_string[len(my_string)-n::]:
        answer += i
    return answer

or

def solution(my_string, n):
    
    return my_string[-n:]
  1. 접미사 배열
def solution(my_string):
    answer = []
    for i in range(1, len(my_string)+1):
        answer.append(my_string[i-1::])
        
    answer.sort()        
    return answer
  1. 접미사인지 확인하기
def solution(my_string, is_suffix):
    answer = []
    result = 0
    for i in range(1, len(my_string)+1):
        answer.append(my_string[i-1::])
        
    for i in answer:
        if i == is_suffix:
            result = 1
    return result
  1. 문자열 앞의 n 글자
def solution(my_string, n):
    answer = my_string[0:n]
    return answer
  1. 접두사인지 확인하기
def solution(my_string, is_prefix):
    answer = 0
    for i in range(0,len(my_string)):
        if my_string[0:i+1] == is_prefix:
            answer = 1
    return answer

or

def solution(my_string, is_prefix):

    return int(my_string.startswith(is_prefix))
  1. 문자열 뒤집기
def solution(my_string, s, e):
    my_list = list(my_string)
    answer = ''
    my_list[s:e+1] = list(reversed(my_list[s:e+1]))
    answer = "".join(my_list)
    return answer

or

def solution(my_string, s, e):
    return my_string[:s] + my_string[s: e + 1][::-1] + my_string[e + 1:]
  1. 세로읽기
def solution(my_string, m, c):
    return my_string[c-1::m]
  1. QR Code
def solution(q, r, code):
    return code[r::q]
  1. 문자 개수 세기
def solution(my_string):
    answer = []
    for i in range(0,52):
        answer.append(0)
        
    for i in my_string:
        if i.isupper():
            answer[ord(i)-65] +=1
        elif i.islower():
            answer[ord(i)-71] +=1
            
    return answer
  1. 배열 만들기1
def solution(n, k):
    answer = []
    for i in range(k,n+1,k):
        answer.append(i)
    return answer
  1. 글자지우기
def solution(my_string, indices):
    my_string = list(my_string)
    answer = ''
    for i in indices:
        my_string[i] = ""
    answer = "".join(my_string)        
    return answer
  1. 카운트 다운
def solution(start, end):
    answer = [i for i in range(end, start  + 1)][::-1]
    return answer
  1. 가까운 1 찾기
def solution(arr, idx):
    answer = 0
    for i in range(idx,len(arr)):
        if arr[i] == 1:
            answer = i
            break
        else:
            answer = -1
    return answer
  1. 리스트 자르기
def solution(n, slicer, num_list):
    a,b,c = slicer
    answer = []
    
    if n==1:
        answer = num_list[0:b+1]
    elif n==2:
        answer = num_list[a::]
    elif n==3:
        answer = num_list[a:b+1]
    elif n==4:
        answer = num_list[a:b+1:c]
        
    return answer
  1. 첫번째로 나오는 음수
def solution(num_list):
    answer = 0
    for i in enumerate(num_list):
        if i[1]<0:
            answer = i[0]
            break
        answer = -1
    return answer
  1. 배열만들기3
def solution(arr, intervals):
    answer = []
    a1,b1 = intervals[0]
    a2,b2 = intervals[1]
    answer = arr[a1:b1+1]+arr[a2:b2+1]
    return answer
  1. 2의 영역
def solution(arr):
    answer =[]
    for i in range(0,len(arr)):
        if arr[i] == 2:
            answer.append(i)

        if answer ==[]:
            result = [-1]
        elif answer!=[]:
            result = arr[answer[0]:answer[-1]+1]
    return result
  1. 배열 조각하기
def solution(arr, query):
    
    for i, num in enumerate(query):
        if i % 2 == 0:
            del arr[num+1:]
        elif i % 2 == 1:
            del arr[:num]
    return arr
profile
꾸준히합니다.

0개의 댓글