본문 바로가기

프로그래머스66

프로그래머스 Lv2 카펫(python) 카펫 풀이 갈색과 노란색의 2가지 색으로 이루어진 카펫의 크기를 구해야 한다. 노란색은 실제로 카펫의 세로 2칸, 가로 2칸을 제외한 길이의 곱 면적이고, 갈색은 노란색을 제외한 즉, 테두리 면적이다. 이를 이용해서 풀이를 하니 다음과 같다. 1. 전체면적 구하기(갈색+노란색) 2. for문을 루트 면적으로 해서 정사각형이 되었을 때 길이까지를 확인하며, 곱하기 면적 중 높이를 먼저 확인하고 이를 바탕으로 너비를 구한다. 3. 구한 높이와 너비를 이용해 height width - brown == (height - 2) (width - 2) 라면 [width, height]로 반환 # 갈색과 노란색의 갯수만으로 카펫의 크기를 구해야한다. def solution(brown, yellow): area = br.. 2024. 1. 31.
프로그래머스 Lv2 N개의 최소공배수 (python) N개의 최소공배수 풀이 최소공배수를 구해야 하는 문제이다. 다만 2개의 수에서 최소공배수를 구하는 것이 아닌 N개의 수에서 최소공배수를 구해야 한다. N개라고 별반 다르지 않으니 최소공배수 공식을 그대로 이용해 주었다. 1. 유클리드 호제법을 이용해 최대공약수 함수와 최소공배수 함수를 만들어준다. 2. 입력받은 리스트의 길이가 1보다 크다면 arr [0]와 arr [1]의 최소공배수를 구해서 arr [0]에 입력하고 arr [1]은 제외시킨다. 3. 2를 반복하고, 그 결과 arr의 길이가 1이 된다면, arr [0]의 값을 return 한다. def gcd(a, b): while b != 0: a, b = b, a % b return a def lcm(a, b): return a * b // gcd(a.. 2024. 1. 31.
프로그래머스 Lv2 기능개발 (python) 기능개발 풀이 스택/큐 문제라고 되어있지만, 난 그와 다른 방법으로 풀었다. 왜냐하면 큐 방법일 듯하다는 생각은 들지만, 어떻게 해야 큐 방법으로 끝낼 수 있는지 감이 오지 않았기 때문이다. 그래서 다음처럼 계획하고 문제를 풀었다. 우선 개발을 모두 마쳤을 때 각 개발마다의 작업일수를 구하기 앞선 것이 완성되었을 때만, 후 순위 기능이 배포가 가능을 이용 2-1. 2중 for문을 이용해 현재 확인 하는 기능이 이미 배포가 되었으면, 다음 기능 확인. 2-2. 배포가 안된 기능이라면 다음 기능을 확인하면서, 이후 기능들이 같이 배포될 수 있는지 확인. 2-3. 이미 배포된 기능이면 또 다음 기능 확인. 2를 반복 후 answer에 입력된 값을 반환 을 사용했다. 다행히 문제가 해결되었다. # 뒤에 있는 기.. 2024. 1. 31.
프로그래머스 Lv2 프로세스(python) 프로세스 풀이 문제를 어떻게 해결할까 하다가 일단 큐로 풀어야 하는 방법이긴 하니까 큐의 방식을 이용해서 front와 rear를 설정해 주고 이를 이용해 줬다. 실행될 때, turn_number라는 변수를 이용해 내가 몇 번째 실행됐는지 기록한다. front와 rear를 비교했을 때, 남은 프로세스가 1개면, 그 프로세스를 실행시켜 준다. 1이 아니라면, 내 뒤에 나보다 우선순위가 높은 프로세스가 있는지 확인한다. 2-1. 만약 있으면, 나를 맨 뒤로 보내면서, front와 rear도 +1 하면서 한 칸 뒤로 무른다. 2-2. 만약 없다면, 내가 실행되야 하니, rear는 그대로 front만 +1 1과 2를 반복하면서 내가 찾으려는 인덱스인데 실행을 못하면 rear+1의 값으로 재설정해주고, 실행한다면 .. 2024. 1. 30.
프로그래머스 Lv2 구명보트 (python) 구명보트 풀이 보고나서 머리로는 어떻게 풀어야겠다 생각되었으나, 코드로 어떻게 해야할지 고민이 되었다. 우선 생각한대로 풀이는 1. 받은 인원을 무게 내림차순으로 정렬한다. 2. 보트를 타야하는데 남은 사람 중 가장 무거운 사람과 가장 가벼운 사람을 태운다. 2-1. 이 때 가장 무거운 사람+ 가벼운 사람 무게가 무게 제한에 걸리면 무거운 사람만 태운다. 3. 다시 2를 반복한다. 4. 2번을 반복한 횟수를 출력한다. 여기서 2번을 구현하려는데 for문을 안될 것 같고, while문을 이용해서 i와 j 인덱스 2개를 사용했다. 이렇게 가장 무거운 쪽에서 그리고 가장 가벼운 쪽에서 각각 진출할 수 있게 만들었다. # 무게 제한과 최대 2명 # 최대한 적게 사용해 모든 사람 구출 # 몇 번 사용했는지 반환 .. 2024. 1. 30.
프로그래머스 Lv1 부족한 금액 계산하기 (python) 부족한 금액 계산하기 풀이 한 번 탈 때마다 price 요금을 더 내야 하는 이상한 놀이기구이다. 얼마나 인기가 많으면 이렇게 배짱장사를 할까... 간단하게 풀어진다. 반복문을 돌리면서 count만큼 탔을 때의 비용을 계산한다. 내가 들고 있는 돈과 비용을 계산하고 그에 따른 답을 반환한다. # price원 -> N번째시 price * N def solution(price, money, count): i = 0 whole_price = 0 while i money: return whole_price - money else: return 0 다른 사람 풀이 max()함수를 사용하고 또한, 수학적으로 값을 계산.. 2024. 1. 30.