728x90
반응형

알고리즘 94

[파이썬] 프로그래머스_K번째 수

문제 https://programmers.co.kr/learn/courses/30/lessons/42748 코딩테스트 연습 - K번째수 [1, 5, 2, 6, 3, 7, 4] [[2, 5, 3], [4, 4, 1], [1, 7, 3]] [5, 6, 3] programmers.co.kr 해설 딱히 뭐 생각할 것 없이 문제에 적힌 순서대로 코드를 작성하면 된다. 코드 -파이썬 def solution(array, commands): answer = [] for i in commands: arr = array[i[0]-1:i[1]] arr.sort() answer.append(arr[i[2]-1]) return answer #################################################..

[파이썬] 프로그래머스_주식가격

문제 https://programmers.co.kr/learn/courses/30/lessons/42584#qna 코딩테스트 연습 - 주식가격 초 단위로 기록된 주식가격이 담긴 배열 prices가 매개변수로 주어질 때, 가격이 떨어지지 않은 기간은 몇 초인지를 return 하도록 solution 함수를 완성하세요. 제한사항 prices의 각 가격은 1 이상 10,00 programmers.co.kr 해설 이 문제는 문제 설명이 좀 헷갈리게 되어 있는데 결국 요지는 prices[i] 값보다 작은 수가 나오는가이다. 바로 다음 값이 큰 수가 나오더라도 일단 1초는 기다렸다고 보기 때문에 1을 더해준 다음 prices의 값을 비교하면 된다. 코드 -파이썬 #프로그래머스 42584(주식가격) def soluti..

[파이썬] 프로그래머스_카펫

문제 https://programmers.co.kr/learn/courses/30/lessons/42842 코딩테스트 연습 - 카펫 Leo는 카펫을 사러 갔다가 아래 그림과 같이 중앙에는 노란색으로 칠해져 있고 테두리 1줄은 갈색으로 칠해져 있는 격자 모양 카펫을 봤습니다. Leo는 집으로 돌아와서 아까 본 카펫의 노란색과 programmers.co.kr 해설 이 문제는 입출력 예시를 직접 손으로 그려보면 좀 더 쉽게 방법을 찾을 수 있다. 위 이미지를 보면 Y의 가로(빨강B) + Y의 세로(파랑B) + 2(하양B) == B // 2라는 것을 알 수 있다. 그렇다면 Y가로 + Y세로 + 2값이 B//2와 같아질 때 카펫의 가로, 세로 크기를 알아낼 수 있다. 카펫의 가로, 세로는 각각 Y가로+2, Y세로..

[파이썬] 프로그래머스_소수 찾기

문제 https://programmers.co.kr/learn/courses/30/lessons/42839 코딩테스트 연습 - 소수 찾기 한자리 숫자가 적힌 종이 조각이 흩어져있습니다. 흩어진 종이 조각을 붙여 소수를 몇 개 만들 수 있는지 알아내려 합니다. 각 종이 조각에 적힌 숫자가 적힌 문자열 numbers가 주어졌을 때, 종이 programmers.co.kr 해설 순열 함수를 사용해 본 적이 없어서 푸는데 시간이 오래 걸렸다.. 우선 permutations(순열) 함수로 입력값 numbers에서 나올 수 있는 모든 경우의 수를 알아낸 후, join 함수로 각각을 합쳐서 만든 수를 리스트에 넣어주면 된다. 그 다음 각각의 값이 소수인지 체크해주면 끝난다. 코드 -파이썬 #프로그래머스 42839(소수..

[파이썬] 프로그래머스_최소직사각형

문제 https://programmers.co.kr/learn/courses/30/lessons/86491 코딩테스트 연습 - 최소직사각형 [[10, 7], [12, 3], [8, 15], [14, 7], [5, 15]] 120 [[14, 4], [19, 6], [6, 16], [18, 7], [7, 11]] 133 programmers.co.kr 해설 이 문제는 가로, 세로에 사로잡히지 않는게 좋다. 명함을 가로로 눕히든 세로로 세우든 지갑에 넣기만 하면 되기 때문에 각 가로, 세로 값을 정렬해서 큰 값을 가로로 / 작은 값을 세로로 두면 된다. 그 후, 가로 값, 세로 값 중에서 가장 큰 값을 골라 그 둘을 곱해주기만 하면 된다. 나는 sizes 배열에서 w,h 배열을 하나씩 꺼내 w_max, h_m..

[파이썬] 프로그래머스_예산

문제 https://programmers.co.kr/learn/courses/30/lessons/12982# 코딩테스트 연습 - 예산 S사에서는 각 부서에 필요한 물품을 지원해 주기 위해 부서별로 물품을 구매하는데 필요한 금액을 조사했습니다. 그러나, 전체 예산이 정해져 있기 때문에 모든 부서의 물품을 구매해 줄 수는 programmers.co.kr 해설 이 문제는 예산이 정해진 회사에서 최대한 많은 부서의 물품을 구매해주도록 하는 문제이다. 최대한 많은 부서의 물품을 구매하려면 우선 정렬을 해주는게 편하다. 만약 신청 금액의 합이 예산과 같다면 for문을 돌지 않아도 바로 값이 나오도록 해준다. 같지 않으면 for문을 돌며 지원 가능한 부서의 수를 구해주면 된다. 코드 -파이썬 def solution(..

[파이썬] 프로그래머스_완주하지 못한 선수(해시)

문제 https://programmers.co.kr/learn/courses/30/lessons/42576 코딩테스트 연습 - 완주하지 못한 선수 수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다. 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수 programmers.co.kr 해설 해시를 사용하진 않았지만.. 이 문제는 두 배열을 정렬 시켜서 각 인덱스의 값이 같은지 비교하면 된다. 값이 다르면 participant 배열의 인덱스를 리턴해주면 된다. 만약 가장 마지막 선수가 완주하지 못했다면 비교되지 않아서 아무런 값도 리턴되지 않기 때문에 가장 마지막 선수가 완주하지 못한 경우를 생각해줘야 한다. 이 경우엔..

[파이썬] 프로그래머스_소수 만들기

문제 https://programmers.co.kr/learn/courses/30/lessons/12977 코딩테스트 연습 - 소수 만들기 주어진 숫자 중 3개의 수를 더했을 때 소수가 되는 경우의 개수를 구하려고 합니다. 숫자들이 들어있는 배열 nums가 매개변수로 주어질 때, nums에 있는 숫자들 중 서로 다른 3개를 골라 더했을 때 programmers.co.kr 해설 이 문제는 주어진 숫자 중 3개의 수를 더해서 소수가 되는 경우의 개수를 구하는 문제이다. 그럼 소수인지를 구하는 함수를 따로 만들어두면 코드를 보기 좀 더 편할 것이다. isPrime 함수에서 해당 수가 2 ~ num까지 나누기를 했을 때 나누어지는 수가 있는지 찾아 소수인지 아닌지 판단한다. 밑의 solution 에선 combi..

[파이썬] 프로그래머스_음양 더하기

문제 https://programmers.co.kr/learn/courses/30/lessons/76501 코딩테스트 연습 - 음양 더하기 어떤 정수들이 있습니다. 이 정수들의 절댓값을 차례대로 담은 정수 배열 absolutes와 이 정수들의 부호를 차례대로 담은 불리언 배열 signs가 매개변수로 주어집니다. 실제 정수들의 합을 구하여 re programmers.co.kr 해설 이 문제는 정수의 절댓값이 담긴 배열 absolutes가 있고, 각 정수들의 부호를 담은 boolean 배열 signs가 있다. 그냥 absolutes 배열에 담긴 각 정수들의 합을 구하면 된다. signs[i]가 True면 양수 / False면 음수이므로 양수일 때는 + / 음수일 때는 -를 해서 값을 구해주면 끝이다. 코드 ..

[파이썬] 프로그래머스_타겟 넘버(DFS/BFS)

문제 https://programmers.co.kr/learn/courses/30/lessons/43165 코딩테스트 연습 - 타겟 넘버 n개의 음이 아닌 정수들이 있습니다. 이 정수들을 순서를 바꾸지 않고 적절히 더하거나 빼서 타겟 넘버를 만들려고 합니다. 예를 들어 [1, 1, 1, 1, 1]로 숫자 3을 만들려면 다음 다섯 방법을 쓸 수 programmers.co.kr 해설 DFS/BFS 문제는 항상 잘 못푸는데, 이 문제 역시 다른 코드를 보고 나서야 어떻게 풀어야 하는지 감을 잡았다.. 이 문제는 numbers 배열에 담긴 숫자들을 더하거나 / 빼서 target과 같은 값이 나오도록 만드는 방법의 수를 구하는 문제이다. 그럼 우선 더하기 / 빼기 밖에 없으니 직접 해보면 된다. numbers :..

728x90
반응형