알고리즘

알고리즘

[프로그래머스 / Python] 더 맵게

🧩 문제 : 더 맵게 💡 정리 입력값으로 스코빌 지수가 담긴 리스트와 스코빌 지수 K가 주어진다. 리스트에 담긴 지수 중 스코빌 지수가 K 이하인 것 들은 문제에서 주어진 수식을 토대로 섞는다. 이때, 몇번 섞어야 모든 음식의 스코빌 지수가 K가 되는지 구하면 된다. 💪🏻 풀이 과정 🌱 아이디어 1️⃣ 최소힙이 구현되어 있는 heapq를 사용하자! > 값 삽입시 알아서 오름차순 정렬됨 2️⃣ 맨 앞에 있는 스코빌 지수가 K 이하인 경우 섞어서 새로운 스코빌 지수를 구해 heapq에 push 한다. (연산 횟수도 하나 증가!) 3️⃣ 원소가 하나 뿐인데, 스코빌 지수가 K 이하이면 -1를 리턴하며 반복문을 종료하게 된다. 📍보러가기 > heapq 사용법 💻 코드 import heapq def solutio..

알고리즘

[프로그래머스 / Python] N으로 표현

🧩 문제 : N으로 표현 💡 문제 포인트 1️⃣ 사용횟수가 8보다 크다면 -1 return 2️⃣ 나누기 연산에서 나머지는 무시 3️⃣ +, * 연산은 자리가 바뀌어도 같은 값이지만 -, / 연산은 자리가 바뀌게 되면 다른 값이 나온다. 💪🏻 풀이 과정 🌱 아이디어 1️⃣ 주어진 숫자 N으로 횟수당 만들 수 있는 조합을 만든다. 2️⃣ 만들어진 숫자 조합에 number로 주어진 숫자가 있는지 확인 후 있다면 횟수를 리턴한다. 3️⃣ 없다면 횟수를 하나씩 늘려 다시 가능한 숫자 조합을 만들고 위 내용을 반복한다. 📍 N = 2, number = 11인 경우의 예제를 살펴보자. N을 1번 사용해 얻을 수 있는 조합 2 N을 2번 사용해 얻을 수 있는 조합 22, 2 + 2, 2 * 2, 2 / 2, 2 - ..

알고리즘

[BOJ / Python] 지름길

🧩 문제 : 1446 지름길 💪🏻 풀이 과정 💡 문제 포인트 1️⃣ 세준이는 0에서 시작, D킬로미터까지 가야한다. 2️⃣ D가 10000보다 작거나 같기 때문에 D까지의 거리 하나하나를 노드로 보면된다. 3️⃣ 노드로 보았을때 일단 최소 거리는 for 문을 통해 1로 초기화해준다. (노드 i 에서 다음 노드 i+1까지의 거리는 1) 4️⃣ 이후 지름길의 정보가 들어오면 graph에 정보를 추가한다. 만약 지름길의 정보에서 지름길이 끝나는지점이 목표지점 D보다 크면 (뒤로 돌아갈 수 없는 고속도로이므로) 정보를 추가하지 않는다. 💻 코드 import sys input = sys.stdin.readline N, D = map(int, input().split()) arr = [[] for _ in rang..

알고리즘

[BOJ / Python] 9372 상근이의 여행

🧩 문제 : 9372 상근이의 여행 💡 문제 핵심 주어지는 비행 스케줄은 항상 연결 그래프를 이룬다 ! 💪🏻 풀이 과정 모든 국가가 연결되있기 때문에 N-1을 출력하면 된다. 💻 코드 T = int(input()) # T: 테스트 케이스의 수 for _ in range(T): N, M = map(int, input().split()) # N: 국가의 수, M: 비행기의 종류 for _ in range(M): # 입력 u, v = map(int, input().split()) print(N-1) 💭결과

알고리즘

[프로그래머스 / Python] 순위

🧩 문제 : 순위 💪🏻 풀이 과정 💡 문제 포인트 1️⃣ 중복된 값을 허용하지 않기 위해 set을 사용한다. 2️⃣ A 선수가 B 선수를 이기고, B 선수가 C 선수를 이긴다면 -> A 선수는 B, C 선수를 이길 수 있다. 3️⃣ 자신의 순위를 알기 위해선 자신을 제외한 모든 선수와의 경기 기록을 가지고 있어야한다. 💻 코드 👩🏻‍💻 깨알 파이썬 문법 > [Python] dictionary에 list 추가하기 from collections import defaultdict def solution(n, results): win = defaultdict(set) # key: 승자, value: 패자 lose = defaultdict(set) # key: 패자, value: 승자 for winner, los..

알고리즘

[BOJ / Python] 15486 퇴사 2

🧩 문제 : 15486 퇴사 2 👩🏻‍💻 문제 정리 백준이가 일을 하는 데 걸리는 시간 T와 일을 하고 나서 얻는 수익 P를 고려해 N일 동안 얻을 수 있는 최대 수익을 구하면 된다. 💪🏻 풀이 과정 다음 예시를 살펴보자. 백준이는 7일간 근무를 할 수 있으므로 1 ~ 7일까지의 수익을 계산할 배열을 만들어줘보자. 1일에 잡힌 상담을 살펴보자. 걸리는 시간은 3일이고 얻을 수 있는 수익은 10만원이다. 따라서 3일 뒤인 3일에 10만원을 벌 수 있으므로 다음과 같이 배열의 값을 입력해준다. 두번째, 2일에 잡힌 상담을 살펴보자. 5일 일해서 20만원을 벌 수 있다. 따라서 6일에 20만원을 얻을 수 있다. 세번째, 3일에 하루 일해서 10만원을 벌 수 있다. 하지만 이미 1~3일에 일을 하고 있으므로 일..

허지렁이
'알고리즘' 카테고리의 글 목록 (5 Page)