Algorithm 27

[프로그래머스] 더 맵게 (Python, 힙)

더 맵게 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 풀이힙의 특성을 이해하고 있다면 바로 풀 수 있는 문제이다.코드import heapqdef check (scoville, K): for n in scoville: if n 배운점heapq 파이썬은 heapq를 통한 heap에 담긴 데이터를 처리할 수 있는 다양한 메서드를 제공한다. 1. heapq.heapify(배열) : 배열을 최소힙으로 만들어준다2. heapq.heappop(배열) : 루트노드를 pop해서 반환한다. 즉, 배열의 최솟값을 반환한다. 자바로도 풀어봤다 import java.util.*;class Solution..

Algorithm 2024.10.29

[프로그래머스] 프로세스 (Python, 큐)

프로세스 풀이큐를 이용해 해결하는 문제이다. 프로세스들의 우선순위에 따라 스케줄링을 하면되고, 동일한 우선순위를 가졌을 경우, 종료된 프로세스를 기준으로 차례대로 실행된다.location을 어떻게 관리해야 될지 고민을 했어야 하는 문제였다. 스케줄링에 따라 움직이는대로 location을 잘 설정해주는것이 중요하다.코드from collections import dequedef solution(priorities, location): answer = 0 q = deque(priorities) while q: m = max(q) l = q.popleft() location -= 1 if l != m: q.append..

Algorithm 2024.10.26

[프로그래머스] H-Index (Python, 정렬)

H-Index 풀이h번 이상 인용된 논문이 h편 이상이어야 한다는 조건 때문에,H-Index의 최댓값은 항상 len(citations)이다.따라서 H-Index는 len(citations)와 0의 숫자 사이에서 존재한다. citations 배열을 오름차 순으로 정렬하고,H-Index의 최댓값인 len(citations) 만큼 for 문을 돌면서citations[i]가 H-Index보다 크거나 같으면, answer에 H-Index를 저장하고 반복을 멈춘다. 코드def solution(citations): answer = 0 citations.sort() n = len(citations) for i in range(n): hIndex = n-i # citations[..

Algorithm 2024.10.25

[프로그래머스] 가장 큰 수 (Python, 정렬)

가장 큰 수 풀이앞글자가 큰 수가 먼저 와야 합쳤을 때 가장 큰 수를 만들 수 있다.예를 들어 [30,4,27]이 있다면 4, 30, 27 순으로 합쳐야 가장 큰 숫자인 43027을 만들 수 있다. 배열의 모든 int 형 숫자들을 str으로 바꾸고 sort()를 하면 앞글자를 기준으로 정렬되기 때문에 해당 특성을 이용한다. 그런데 30과 3처럼 앞자리가 같은 애들은 30이 먼저 정렬되게 된다. 하지만 이어 붙인다고 생각하면 330 > 303 이기 때문에 3이 앞에 와야 하기 때문에 자릿수를 맞춰줘서 비교한다.들어올 수 있는 가장 큰 값이 1000이기 때문에 문자열을 세번 반복해 이어붙이면 뒷자리는 상관없이 높은자리로 가정해서 비교할 수 있다.예시로 보여주자면 sorted(['30','3'])는 ['30'..

Algorithm 2024.10.25

[프로그래머스] 아이템 줍기 (Python, BFS)

아이템 줍기 풀이 - ㄷ자 모양의 길을 가로지를 수 없도록 모든 좌표를 2배해서 직사각형을 그려줘야 한다.- 직사각형의 테두리는 1로, 내부는 0으로 채운다.- 직사각형이 겹칠때를 대비해 다른 직사각형의 내부인지를 검사하고 테두리만 1로 채운다.- 좌표를 2배해서 그려줬기 때문에 최종 답안을 //2 해서 return한다.코드from collections import dequedef solution(rectangle, characterX, characterY, itemX, itemY): visited = [[0]*102 for _ in range(102)] graph = [[-1]*102 for _ in range(102)] dx=[0,0,1,-1] dy=[1,-1,0,0] ..

Algorithm 2024.10.24