ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 파이썬 알고리즘 코딩 문제 풀기(programmers)
    Python 2024. 7. 16. 21:18

    25. 나누어 떨어지는 숫자 배열

    array의 각 element 중 divisor로 나누어 떨어지는 값을 오름차순으로 정렬한 배열을 반환하는 함수, solution을 작성해주세요.

    divisor로 나누어 떨어지는 element가 하나도 없다면 배열에 -1을 담아 반환하세요.

     

    일단, 문제 그대로 for문을 돌면서 divisor로 나눴을 때 떨어지는 값들을 요소로 받는 리스트 valid_list를 생성했다.

    if 문으로 divisor로 나누어 떨어지는 element가 하나도 없으면 [-1] 반환하는 코드를 추가하고

    새로 만들어준 valid_list()를 오름차순으로 정렬한 후 반환해주면 끝

    def solution(arr, divisor):
        # arr를 돌면서, i를 divisor로 나누었을때 딱 떨어지는 값 i 리스트 생성
        valid_arrays = [i for i in arr if i % divisor == 0] 
    
        if not valid_arrays: # 만약 나누어 떨어지는 요소가 없으면
            return [-1]        # -1 반환
    
        valid_arrays.sort()  # 오름차순 정렬 ( sort()메소드는 정렬을 할 뿐 None을 반환한다)
    
        return valid_arrays
    
    print(solution([5,9,7,10], 5))
    print(solution([5,9,7], 10))

     

    실행하면

    [5, 10]
    [-1]

    26. 음양 더하기

    어떤 정수들이 있습니다. 이 정수들의 절댓값을 차례대로 담은 정수 배열 absolutes와 이 정수들의 부호를 차례대로 담은 불리언 배열 signs가 매개변수로 주어집니다. 실제 정수들의 합을 구하여 return 하도록 solution 함수를 완성해주세요.

     

    [제한사항]

    absolutes의 길이는 1 이상 1,000 이하입니다.

    absolutes의 모든 수는 각각 1 이상 1,000 이하입니다.

    signs의 길이는 absolutes의 길이와 같습니다.

    signs[i] 참이면 absolutes[i] 실제 정수가 양수임을, 그렇지 않으면 음수임을 의미합니다.

     

    [입출력 예시]

    • signs가 [true,false,true] 이므로, 실제 수들의 값은 각각 4, -7, 12입니다.
    • 따라서 수의 합인 9 return 해야 합니다.

    그냥 단순하게, 만약 signs의 인덱스 i가 참이면 absolutes의 인덱스 i 값은 양수

    아니면(else > 즉, signs의 인덱스 i 값이 거짓이면) absolutes의 인덱스 i 의 값은 음수. 그 담에 그 값들을 sum해서 반환해주면 된다.

    def solution(absolutes, signs):
        # signs의 각 인덱스 값으로 요소를 판단해야하므로
        for i in range(len(signs)):
            if signs[i]:  # signs[i]가 True면
                absolutes[i] = int(absolutes[i])
            else:         # if문의 조건이 False인 경우, 즉 signs[i]가 False
                absolutes[i] = -int(absolutes[i])
    
        return sum(absolutes)

     

     

    실행해보면

    1
    0

     

    27. 핸드폰 번호 가리기

    프로그래머스 모바일은 개인정보 보호를 위해 고지서를 보낼 때 고객들의 전화번호의 일부를 가립니다.

    전화번호가 문자열 phone_number로 주어졌을 때, 전화번호의 뒷 4자리를 제외한 나머지 숫자를 전부 *으로 가린 문자열을 리턴하는 함수, solution을 완성해주세요.

     

    제한 조건

    phone_number는 길이 4 이상, 20이하인 문자열입니다.

     

    입출력 예

    phone_number "01033334444" return "*******4444"

     

    휴대폰 번호의 길이가 11이든 12이든 마지막 네자리수만 빼고 *로 반환해주면 되니까

    1. phone_number의 길이인 len(phone_number)에서 -4를 뺀 수 만큼 "*"를 곱해서 표기하고

    2. 거기에 폰번호 뒤 네자리만 이어붙여주면 된다. 마지막 문자열의 index는 -1 이므로 phone_number[-4:] 하면 된다.

    def solution(phone_number):
            # phone_number의 길이를 구하고 4를 빼준 만큼 "*"를 곱해서 *로 표기하고
            # phone_number의 마지막에서 네자리를 붙여준다. (-1은 index 맨 마지막 값)
            return "*" * (len(phone_number) - 4) + phone_number[-4:]
    
    print(solution("01033334444"))

     

    실행해보면

    *******4444

    28. 없는 숫자 더하기

    0부터 9까지의 숫자 중 일부가 들어있는 정수 배열 numbers가 매개변수로 주어집니다.

    numbers에서 찾을 수 없는 0부터 9까지의 숫자를 모두 찾아 더한 수를 return 하도록 solution 함수를 완성해주세요.

     

    제한사항

    1 ≤ numbers의 길이 ≤ 9

    0 ≤ numbers의 모든 원소 ≤ 9

    numbers의 모든 원소는 서로 다릅니다.

     

    입출력 예

    numbers [5,8,4,0,6,7,9] 

    result 6 (1+2+3니까)

     

    일단 0부터 9까지의 숫자 리스트 basic_numbers를 새로 만들었다.

    그리고 i 가 basic_numbers를 돌면서 > numbers 리스트에 없는 값을 찾을때마다 > 그 값을 반환해서 더해주도록 했다.

    def solution(numbers):
        basic_numbers = list(range(0, 10))
        return sum(i for i in basic_numbers if i not in numbers)
    
    print(solution([5,8,4,0,6,7,9]))
    print(solution([3,4,5,8,0,6,7,9]))

     

    실행해보면

    6
    3

    29. 가장 작은 수 제어하기

    정수를 저장한 배열, arr 에서 가장 작은 수를 제거한 배열을 리턴하는 함수, solution을 완성해주세요.

    단, 리턴하려는 배열이 빈 배열인 경우엔 배열에 -1을 채워 리턴하세요.

    예를들어 arr이 [4,3,2,1]인 경우는 [4,3,2]를 리턴 하고, [10]면 [-1]을 리턴 합니다.

     

    제한 조건

    arr은 길이 1 이상인 배열입니다.

    인덱스 i, j에 대해 i ≠ j이면 arr[i] ≠ arr[j] 입니다.

     

    입출력 예

    # arr [4,3,2,1] return [4,3,2]

    # arr [10] return [-1]

     

    음.. 일단 리턴하려는 배열이 빈 배열인 경우엔 배열에 -1을 채워 리턴 -> 이거부터 if문으로 처음에 넣어주고

    number의 가장 작은 값을 min으로 구해서 변수 min_number 에 새로 지정하고

    i 가 numbers를 돌면서 min_number(가장 작은 값)이 아닌 값을 반환하도록 했다.

    def solution(numbers):
        if len(numbers) == 1:
            return [-1]
    
        min_number = min(numbers)
    
        return list(i for i in numbers if i != min_number)
    
    print(solution([4,3,2,1]))
    print(solution([10]))

     

    실행하면 잘 됨

    [4, 3, 2]
    [-1]

     

     

Designed by Tistory.