Algorithm/Greedy(6)
-
[PGM] Level.2 귤 고르기
코딩테스트 연습 - 귤 고르기경화는 과수원에서 귤을 수확했습니다. 경화는 수확한 귤 중 'k'개를 골라 상자 하나에 담아 판매하려고 합니다. 그런데 수확한 귤의 크기가 일정하지 않아 보기에 좋지 않다고 생각한 경화는 귤school.programmers.co.kr문제설명귤 크기를 분류했을 때 서로 다른 종류의 수를 최소화ex. 총 8개의 귤, 6개만 판매할 때 크기 종류가 가작 적게 판매귤 사이즈 [1,2,2,3,3,4,5,5] => [2,2,3,3,5,5] => 3가지 종류 접근방법그리디 활용1. 딕셔너리 key 귤크기, value 갯수2. 갯수 많은 것부터 판매(0,음수가 되면 종료) 구현코드[Python]import collectionsdef solution(k, tangerine): type..
2025.04.01 -
[PGM] Leve.3 섬 연결하기
프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr코드구현[ Python ]def solution(n, costs): answer = 0 costs.sort(key=lambda x:x[2]) connect = set([costs[0][0]]) while len(connect) != n: for cost in costs: if cost[0] in connect and cost[1] in connect: continue if cost[0] in connect or cost[1] in connect: ..
2024.12.13 -
[PGM] Level.2 구명보트
프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr문제설명구명보트 최대탑승인원 2명무게제한이 있을 때 (구출할 수 없는 무게제한은 없음)최소 구명보트 갯수 ex. 70,50,80,50 kg 사람 4명, 무게제한 100kg1번 구명보트 80kg2번 구명보xm70kg3번 구명보트 50kg,50kg 총 3개 필요 접근방법- 그리디(정렬), 이분탐색(투포인터) 활용 => O(NlogN)1. 오름차순 정렬2. 몸무게가 작은 사람과 몸무게가 많은 사람이 같이 탈수 있다면 같이 탑승3. 아니면 몸무게가 많은 사람만 탑승4. while ( 왼쪽 index값이 오른쪽 i..
2024.09.07 -
[PGM] Level.1 체육복
프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr def solution(n, lost, reserve): # 다 나눠주고 0 이 있으면 실패 # 다 나눠주고 0 이상이면 성공 arr=[1]*n for i in lost: arr[i-1]-=1 for i in reserve: arr[i-1]+=1 for i in range(n): if arr[i]==0: # 앞번호 학생에서 가져오기 if i !=0 and arr[i-1]==2: ..
2024.08.30 -
[PGM] Level.0 개미군단
프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr def solution(hp): attack = [5,3,1] count= 0 for a in attack: print(hp, a, hp//a, hp%a, count) count += hp//a hp %= a return count def solution(hp): attack = [5,3,1] answer= 0 for a in attack: count, hp = divmod(hp,a) answer += ..
2024.08.30 -
[PGM] Level.2 조이스틱
프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr ▶ Greedy, 인덱스계산# 조이스틱으로 알파벳 이름 name 완성# 조이스틱의 조작 횟수의 최소값 return# A A A A# _ _ _ _# "AJAAAAAAZA": 우측이동 1번 + J 변경 9번 + 좌측이동 3번 + Z 변경 1번 = 14번def solution(name): alphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' answer = 0 size = len(name) move = size - 1 # 조이스틱 커서 이동(default:우측 방향) ..
2024.08.27