알고리즘/프로그래머스

    [Level2] 최솟값 만들기

    programmers.co.kr/learn/courses/30/lessons/12941 코딩테스트 연습 - 최솟값 만들기 길이가 같은 배열 A, B 두개가 있습니다. 각 배열은 자연수로 이루어져 있습니다. 배열 A, B에서 각각 한 개의 숫자를 뽑아 두 수를 곱합니다. 이러한 과정을 배열의 길이만큼 반복하며, 두 수를 곱 programmers.co.kr 내 풀이 def solution(A,B): answer = 0 A.sort() B.sort(reverse = True) for i, v in enumerate(A): answer += v * B[i] return answer 최솟값을 만드는거라 큰값*작은값 + 큰값*작은값 ....... = answer 이다. 문제를 잘... 생각해보자. 다른사람 풀이 d..

    [Level1] 나누어 떨어지는 숫자 배열

    링크 : programmers.co.kr/learn/courses/30/lessons/12910 코딩테스트 연습 - 나누어 떨어지는 숫자 배열 array의 각 element 중 divisor로 나누어 떨어지는 값을 오름차순으로 정렬한 배열을 반환하는 함수, solution을 작성해주세요. divisor로 나누어 떨어지는 element가 하나도 없다면 배열에 -1을 담아 반환하 programmers.co.kr 내 풀이 def solution(arr, divisor): answer = [] for i in arr: if i % divisor == 0: answer.append(i) if len(answer) == 0: answer.append(-1) return sorted(answer) 다른 사람이 푼 풀..

    [Level1] 체육복

    링크 : programmers.co.kr/learn/courses/30/lessons/42862 코딩테스트 연습 - 체육복 점심시간에 도둑이 들어, 일부 학생이 체육복을 도난당했습니다. 다행히 여벌 체육복이 있는 학생이 이들에게 체육복을 빌려주려 합니다. 학생들의 번호는 체격 순으로 매겨져 있어, 바로 앞번 programmers.co.kr def solution(n, lost, reserve): reserve1 = list(set(reserve)-set(lost)) lost1 = list(set(lost)-set(reserve)) answer = n - len(lost1) for i in range(len(reserve1)): if reserve1[i]-1 in lost1: answer += 1 lost..

    [Level1] 두 개 뽑아서 더하기

    링크 : programmers.co.kr/learn/courses/30/lessons/68644 내 풀이 def solution(numbers): result = [] for i in range(len(numbers)): for j in range(1, len(numbers)): if(i == j): continue a = numbers[i] + numbers[j] if a not in result: result.append(a) result.sort() return result 다른 인덱스의 두 개의 수를 뽑아야해서 이중 for문을 사용하였고 더한 값이 중복되는 경우가 없어서 not in을 사용하였다. 후에 출력해보니 numbers[3] + numbers[3] 이렇게 인덱스가 겹치는 경우가 있었다. 문..

    [Level1] 크레인 인형뽑기 게임

    programmers.co.kr/learn/courses/30/lessons/64061 코딩테스트 연습 - 크레인 인형뽑기 게임 [[0,0,0,0,0],[0,0,1,0,3],[0,2,5,0,1],[4,2,4,4,2],[3,5,1,3,1]] [1,5,3,5,1,2,1,4] 4 programmers.co.kr def solution(board, moves): a = [] result = 0 b = 0 for move in moves: for i in range(len(board)): if board[i][move-1] > 0: a.append(board[i][move-1]) board[i][move-1] = 0 b += 1 if b == 1: break elif a[b - 1] == a[b - 2]: res..

    [Level1]완주하지 못한 선수

    programmers.co.kr/learn/courses/30/lessons/42576 1. participant = ["mislav", "stanko", "mislav", "ana"] completion = ["stanko", "ana", "mislav"] def solution(participant, completion): for i in participant: if i not in completion: print(i) return i else: completion.remove(i) 답은 맞지만 효율성테스트에서 시간초과 떠버림 리스트 삭제는 n이란다.. 2. import collections def solution(participant, completion): answer=collections.Cou..