PYTHON91 프로그래머스 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. 백준 실버1 1149. RGB거리 (python) RGB거리 풀이 양옆의 집의 색이 모두 달라야 한다는 조건이다. 빨강, 초록, 파랑 중 하나로 칠해야하는데, 이 3가지를 이용해 모든 집을 가장 최소비용이 나오도록 칠해야 하는 문제다. 아래처럼 풀었다. 집의 갯수 N과 집마다 칠 할 때 비용을 입력받음. 각 집을 칠하는 비용 최솟값을 저장할 배열을 생성. 맨 처음 집을 칠할 때 비용을 미리 작성 각 집을 돌면서 지금까지의 비용을 산정, 이때, 빨강, 초록, 파랑의 색을 고르되 이전 집과의 색이 다르도록 비용을 산정 모든 집이 산정이 다 되었을 경우, 마지막으로 가장 적은 비용 산정이 된 것을 고르고 출력 import sys def solve(N, costs): # 각 집을 칠하는 비용의 최솟값을 저장할 dp 배열 생성 dp = [[0] * 3 for _.. 2024. 1. 31. 프로그래머스 Lv2 기능개발 (python) 기능개발 풀이 스택/큐 문제라고 되어있지만, 난 그와 다른 방법으로 풀었다. 왜냐하면 큐 방법일 듯하다는 생각은 들지만, 어떻게 해야 큐 방법으로 끝낼 수 있는지 감이 오지 않았기 때문이다. 그래서 다음처럼 계획하고 문제를 풀었다. 우선 개발을 모두 마쳤을 때 각 개발마다의 작업일수를 구하기 앞선 것이 완성되었을 때만, 후 순위 기능이 배포가 가능을 이용 2-1. 2중 for문을 이용해 현재 확인 하는 기능이 이미 배포가 되었으면, 다음 기능 확인. 2-2. 배포가 안된 기능이라면 다음 기능을 확인하면서, 이후 기능들이 같이 배포될 수 있는지 확인. 2-3. 이미 배포된 기능이면 또 다음 기능 확인. 2를 반복 후 answer에 입력된 값을 반환 을 사용했다. 다행히 문제가 해결되었다. # 뒤에 있는 기.. 2024. 1. 31. SWEA D3 19113. 식료품 가게 (python) 식료품 가게 풀이 할인 가격과 할인 전 가격이 같이 있는 리스트에서 할인 가격만을 추출해 내야 하는 문제이다. 오름차순으로 정렬해서 제공해주지만, 내가 풀이하는 방식으로는 내림차순으로 정렬해서 풀어야 문제가 풀리기에 재정렬을 해주었다. 풀이 계획은 아래와 같다. 내림차순으로 재정렬 while문을 시행. 할인 가격 즉, 0.75를 곱한 가격이 리스트에 있으면, 해당 인덱스를 찾아내서 pop()을 시행 후 answer 리스트에 입력 0.75를 곱한 가격이 리스트에 없으면 그것이 할인 가격이므로 해당 인덱스를 pop(), answer 리스트에 입력. 2와 3의 과정이 모두 끝난 후 answer는 내림차순으로 정렬되어 있는 리스트이므로, 이를 오름차순으로 형식에 맞게 출력하기 위해 for문 및 print(end.. 2024. 1. 30. SWEA D3 19185. 육십갑자 (python) 육십갑자 풀이 흔히 아는 10 간과 12지를 결합하는 방식과 관련한 코드를 짜는 문제이다. 육 십간 자는 60년마다 회갑이 있기에 이를 기반으로 최소공배수를 구하여서 풀었다. N, M 의 최소공배수 구하기 gapja라는 리스트를 만들고 그 안에 회갑까지 가능한 모든 수를 넣기. 이제 찾으려는 년도에 % 연산자를 이용해서 gapja [인덱스]에 넣어서 구현 # 유클리드 호제법을 이용한 최소공배수 구하기 # 최소공약수 def gcd(a, b): while b != 0: a, b = b, a % b return a # 최소공배수 def lcm(a, b): return a * b // gcd(a, b) T = int(input()) for testcase in range(1, T+1): N, M = map(in.. 2024. 1. 30. 프로그래머스 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. 이전 1 ··· 9 10 11 12 13 14 15 16 다음