Algorithm 41

프로그래머스 가장 큰 수 파이썬

https://programmers.co.kr/learn/courses/30/lessons/42746 코딩테스트 연습 - 가장 큰 수 0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요. 예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰 programmers.co.kr 이문제는 정말이지.. ㅎㅎㅎ 그다지 어렵지 않은 인상을 주며 나를 아주 큰 곤경에 빠트린 문제다. 5시간 넘게 고민하다가 결국엔 풀어내지 못했다. 처음엔 그냥 배열 원소를 string 으로 변환한 후, string 정렬하면 끝 아니야?? 라고 생각했다. 이렇게 풀면 배열로 [3, 30, 34, 5,..

프로그래머스 이중우선순위큐

https://programmers.co.kr/learn/courses/30/lessons/42628 코딩테스트 연습 - 이중우선순위큐 programmers.co.kr 글쎄.. 이문제는 무지 쉬웠다. 뭐 고민할게 있나.. 하고 5분만에 풀고 제출하니 통과했다. 그냥 우선순위큐는 기본적으로 최소힙이니까 최소값을 꺼낼때는 heappop 으로 최대값을 꺼낼땐 pop 으로. 최종적으로 남은 값이 있으면 answer 에 맥스, 민으로 값을 넣어주면 끝이다.. 이게 왜 레벨 3이지?? import heapq from collections import deque def solution(operations): answer = [0, 0] d = deque(operations) h = [] while d: operati..

프로그래머스 디스크 컨트롤러

https://programmers.co.kr/learn/courses/30/lessons/42627 코딩테스트 연습 - 디스크 컨트롤러 하드디스크는 한 번에 하나의 작업만 수행할 수 있습니다. 디스크 컨트롤러를 구현하는 방법은 여러 가지가 있습니다. 가장 일반적인 방법은 요청이 들어온 순서대로 처리하는 것입니다. 예를 programmers.co.kr 음... 난 이런 류의 문제에 약한걸까.. 진정한 뇌정지가 와서 아예 모르겠었다.. 어떻게든 다른분의 풀이를 참고하지 않고 풀어보려고 했으나 한번 막힌 머리는 돌아갈줄을 몰랐다.. 이런 문제를 한번씩 접할때마다 좌절스럽다 그래도 어쨌든.. 풀이를 보고 어떻게 해야하는지 이해하였다. 앞으로 이런 유형의 문제를 또 만났을 때 풀어낼 수 있도록 확실히 이해하고 ..

프로그래머스 베스트앨범 파이썬

https://programmers.co.kr/learn/courses/30/lessons/42579 코딩테스트 연습 - 베스트앨범 스트리밍 사이트에서 장르 별로 가장 많이 재생된 노래를 두 개씩 모아 베스트 앨범을 출시하려 합니다. 노래는 고유 번호로 구분하며, 노래를 수록하는 기준은 다음과 같습니다. 속한 노래가 programmers.co.kr def solution(genres, plays): answer = [] dic = {} for i in range(len(genres)): genre = genres[i] if genre not in dic: dic[genre] = [plays[i], (plays[i], i)] else: dic[genre][0] += plays[i] dic[genre].ap..

백준 14464 파이썬***

더보기 https://www.acmicpc.net/problem/14464 14464번: 소가 길을 건너간 이유 4 첫 줄에 C와 N이 주어진다. 다음 C줄에는 T1…TC가 주어지고, 그 다음 N줄에는 Aj와 Bj(Aj ≤ Bj)가 주어진다. A, B, T는 모두 최대 1,000,000,000인 음이 아닌 정수이고, 같을 수도 있다. www.acmicpc.net import sys C, N = map(int, sys.stdin.readline().rstrip().split()) chickens = [int(sys.stdin.readline().rstrip()) for _ in range(C)] chickens = sorted(chickens) cows = [list(map(int, sys.stdin.re..

백준 14464 파이썬

https://www.acmicpc.net/problem/14464 14464번: 소가 길을 건너간 이유 4 첫 줄에 C와 N이 주어진다. 다음 C줄에는 T1…TC가 주어지고, 그 다음 N줄에는 Aj와 Bj(Aj ≤ Bj)가 주어진다. A, B, T는 모두 최대 1,000,000,000인 음이 아닌 정수이고, 같을 수도 있다. www.acmicpc.net import sys import heapq C, N = map(int, sys.stdin.readline().rstrip().split()) chickens = [] for _ in range(C): heapq.heappush(chickens, int(sys.stdin.readline())) cows = [] for _ in range(N): s, e ..

백준 14698 파이썬

https://www.acmicpc.net/problem/14698 14698번: 전생했더니 슬라임 연구자였던 건에 대하여 (Hard) 각 테스트 케이스마다 슬라임을 끝까지 합성했을 때 청구될 비용의 최솟값을 1, 000, 000, 007로 나눈 나머지를 출력한다. 전기 에너지가 전혀 필요하지 않은 경우엔 1 을 출력한다. www.acmicpc.net import sys import heapq T = int(sys.stdin.readline()) for _ in range(T): N = int(sys.stdin.readline()) energies = list(map(int, sys.stdin.readline().rstrip().split())) heapq.heapify(energies) if len(e..

백준 1826 파이썬**

https://www.acmicpc.net/problem/1826 1826번: 연료 채우기 첫째 줄에 주유소의 개수 N(1 ≤ N ≤ 10,000)가 주어지고 두 번째 줄부터 N+1번째 줄 까지 주유소의 정보가 주어진다. 주유소의 정보는 두개의 정수 a,b로 이루어 져 있는데 a(1 ≤ a ≤ 1,000,000)는 성경 www.acmicpc.net import heapq import sys N = int(sys.stdin.readline()) gas_stations = [] for _ in range(N): a, b = map(int, sys.stdin.readline().rstrip().split()) heapq.heappush(gas_stations, (a, b)) remain_distance, re..

백준 11000 파이썬

https://www.acmicpc.net/problem/11000 11000번: 강의실 배정 첫 번째 줄에 N이 주어진다. (1 ≤ N ≤ 200,000) 이후 N개의 줄에 Si, Ti가 주어진다. (0 ≤ Si < Ti ≤ 109) www.acmicpc.net import sys import heapq N = int(sys.stdin.readline()) class_list = [] for _ in range(N): S, T = map(int, sys.stdin.readline().rstrip().split()) class_list.append((S, T)) class_list.sort() # print(class_list) q = [] for c in class_list: if q and q[0]

백준 2012 파이썬**

https://www.acmicpc.net/problem/2012 2012번: 등수 매기기 첫째 줄에 자연수 N이 주어진다. (1 ≤ N ≤ 500,000) 둘째 줄부터 N개의 줄에 걸쳐 각 사람의 예상 등수가 순서대로 주어진다. 예상 등수는 500,000 이하의 자연수이다. www.acmicpc.net import sys N = int(sys.stdin.readline()) R = [] for _ in range(N): R.append(int(sys.stdin.readline())) R.sort() ans = 0 for i in range(1, N + 1): ans += abs(i - R[i - 1]) print(ans) 간단하게 생각하면 될 문제인데, 첫단추를 잘못끼워서 그런지 많이 헤맸다. 1. 받..