일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 그리디
- Data Engineering
- airflow webserver
- Python
- hackerrank
- Dynamic Programming
- Pseudo Lab
- 빅데이터를 지탱하는 기술
- docker container
- datacamp
- SQL
- 데이터 엔지니어
- airflow architecture
- data_engineer
- telegram
- leetcode
- BOT
- docker
- delete join
- 백준온라인저지
- 프로그래머스
- terraform
- 알고리즘
- Airflow
- MySQL
- Spark
- dsf
- 백준 온라인 저지
- docker image
- 2023년 목표
- Today
- Total
목록그리디 (9)
Lim Seunghyun Space
문제 출처 https://www.acmicpc.net/problem/13305 13305번: 주유소 표준 입력으로 다음 정보가 주어진다. 첫 번째 줄에는 도시의 개수를 나타내는 정수 N(2 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 인접한 두 도시를 연결하는 도로의 길이가 제일 왼쪽 도로부터 N-1 www.acmicpc.net 문제 요구사항 N개의 도시가 수평으로 존재하는 어떤 나라에서 수평의 제일 왼쪽의 도시에서 제일 오른쪽의 도시로 차를 타고 이동 인접한 두 도시 사이의 도로를 이동할 때 1Km마다 1L의 기름을 사용 최초 출발시에는 기름이 없어서 주유소에서 기름을 넣고 출발 각 도시에는 단 하나의 주유소가 존재하며, 리터당 가격이 도시마다 다를 수 있음 제일 왼쪽 도시에서 제일 오른쪽 도시..
문제 출처 https://www.acmicpc.net/problem/11399 11399번: ATM 첫째 줄에 사람의 수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄에는 각 사람이 돈을 인출하는데 걸리는 시간 Pi가 주어진다. (1 ≤ Pi ≤ 1,000) www.acmicpc.net 문제 해설 사람이 N명이고, 각 사람이 돈을 인출하는 데 걸리는 시간을 주어진다. ATM 기기가 하나밖에 없기 때문에 줄을 잘 배정하여 모든 사람이 돈을 인출하는 게 덜리는 시간의 합이 최소화하도록 하기 이 문제의 경우, 1번이 인출해야 2번이 인출이 가능하고 2번이 인출해야 3번이 인출이 가능하다. 즉, n번째 사람이 인출하려면 n1, n2, .... , n-1번 사람이 모두 인출이 되어야 한다. 이를 수식으로 변..
문제 출처 https://www.acmicpc.net/problem/1931 1931번: 회의실 배정 (1,4), (5,7), (8,11), (12,14) 를 이용할 수 있다. www.acmicpc.net 문제 요구사항 N개의 회의에 대하여 회의가 겹치지 않게 사용할 수 있는 회의의 최대 개수 구하기 문제 아이디어 회의의 시작 시간이 빠른 순으로 정렬하여 문제를 해결하려면 아래와 같은 반례가 존재한다. [0, 24], [1, 12], [12, 24] 시작시간이 빠른 순으로 정렬해서 풀이를 한다면 [0, 24]만 선택하지만 [1, 12] [12, 24]을 선택하는 것이 최댓값이다. 회의의 진행 시간을 기준으로 정렬하여 문제를 해결하려면 아래와 같은 반례가 존재한다. [2. 5] [1, 12], [12, 2..
문제 출처 https://www.acmicpc.net/problem/2217 2217번: 로프 N(1 ≤ N ≤ 100,000)개의 로프가 있다. 이 로프를 이용하여 이런 저런 물체를 들어올릴 수 있다. 각각의 로프는 그 굵기나 길이가 다르기 때문에 들 수 있는 물체의 중량이 서로 다를 수도 있다. 하 www.acmicpc.net 문제 요구사항 N개의 로프를 주어지고 각각의 로프가 버틸 수 있는 최대 중량이 주어질 때, 로프를 이용하여 들어 올릴 수 있는 물체의 최대 중량을 구하기 문제 아이디어 최대 중량을 로프의 갯수 * 로프의 최소 중량 값으로 진행 하지만, 위의 아이디어는 모든 로프를 이용한다는 전제 조건하에 각 로프에 물건의 무게 / 로프의 개수만큼 적용하기 때문에 맞다고 생각되었지만 로프의 최대..
문제 출처 https://www.acmicpc.net/problem/2839 2839번: 설탕 배달 상근이는 요즘 설탕공장에서 설탕을 배달하고 있다. 상근이는 지금 사탕가게에 설탕을 정확하게 N킬로그램을 배달해야 한다. 설탕공장에서 만드는 설탕은 봉지에 담겨져 있다. 봉지는 3킬로그 www.acmicpc.net 문제 요구사항 설탕 봉지가 3kg, 5kg짜리를 사용하여 정확하게 N킬로그램을 배달해야 한다. 배달을 위해 사용하는 봉지의 최소 갯수를 출력 조건에 제시된 설탕 봉지를 사용하여 정확하게 N킬로그램을 만들 수 없는 경우 -1을 출력 나의 코드 (python3) # source : https://www.acmicpc.net/problem/2839 N = int(input()) answer = 0 wh..
문제 정의 N에 자신의 연봉 최댓값을 보관 0부터 N까지 스티커를 이용하여 표현 1개의 팩에는 [0]부터 [9]까지 한 장씩 존재 나의 풀이 # 근우의 연봉 최댓값 N = input() S = "1" * (len(N) -1)+ "0" if len(N) == 1: print(1) else: if int(N) > int(S): print(len(N)) else: print(len(N) - 1) 자리 수가 1인 경우는 무조건 1개의 팩을 이용하기 때문에 조건을 두어 처리 1개의 팩으로 생성할 수 있는 최대 숫자 : 10 2개의 팩으로 생성할 수 있는 최대 숫자 : 110 3개의 팩으로 생성할 수 있는 최대 숫자 : 1110 위의 규칙을 이용하여 N의 자리수를 이용하여 S를 생성하고 N과 S간의 비교를 통해 스..
문제 정의 N명의 학생들의 예상 등수와 실제 등수 간의 차이 합이 최소가 되도록 한다. 예상 등수와 실제 등수 간의 차이는 절대값으로 계산한다. 1등부터 N등까지 같은 등수는 없다. 나의 풀이 # source : https://www.acmicpc.net/problem/2012 N = int(input()) ranks = [] answer = 0 for _ in range(N): ranks.append(int(input())) for index, rank in enumerate(sorted(ranks)): answer += abs((index + 1) - rank) print(answer) 예상 등수와 실제 등수 간의 차이가 최소가 되어야 하므로, 예상 등수를 오름 차순으로 정렬하여 예상 등수와 실제 등..
문제 정의 문자열 S는 0, 1 구성되어 있고, 모든 숫자가 전부 같게 만들어야 한다. 뒤집을 때 연속된 숫자인 경우, 뒤집는 횟수는 1회로 한다. 예를 들어, 00010일 시, 앞의 세 자리를 11110으로 뒤집는다면 이는 1회 뒤집는 것으로 간주 뒤집는 최소 횟수를 구하기 나의 풀이 # source : https://www.acmicpc.net/problem/1439 import sys S = sys.stdin.readline().strip() result = [0, 0] for i in [0, 1]: is_continue = False for idx, value in enumerate(S): if value != str(i): if is_continue == False: result[i] += 1 ..
문제 정의 여벌의 체육복이 있는 학생만 다른 학생에게 체육복을 빌려줄 수 있음 N번 학생은 N-1번, N+1번 학생의 체육복만 빌릴 수 있음 여벌의 체육복을 가지고 있는 학생이 도난을 당한 경우, 대여할 수 있는 체육복이 없음 -> 본인의 체육복을 이용 체육복을 이용할 수 있는 최대 학생 수를 구하는 문제 나의 풀이 # source : https://programmers.co.kr/learn/courses/30/lessons/42862 def solution(n, lost, reserve): able_lst = [0 for _ in range(n)] lost = sorted(lost) reserve = sorted(reserve) # 체육복을 가지고 있는 학생에 대한 값 변경 for i in range(..