본문 바로가기

그리디알고리즘6

[Java] 백준 6068 - 시간 관리하기 https://www.acmicpc.net/problem/6068 6068번: 시간 관리하기성실한 농부 존은 시간을 효율적으로 관리해야 한다는 걸 깨달았다. 그는 N개의 해야할 일에 (1www.acmicpc.net해결방법 및 풀이https://study-it-all.tistory.com/14위 링크를 참조해주세요.java는 2차원 배열 대신 객체 배열을 이용해서 풀이를 했습니다.코드import java.util.Scanner;class Work{ int time; //일하는 데에 걸리는 시간 int deadline; //마감시간 Work(int t, int d){ this.time = t; this.deadline = d; }}public class Main.. 2022. 5. 20.
[Python] 백준 6068 - 시간 관리하기 https://www.acmicpc.net/problem/6068 6068번: 시간 관리하기 성실한 농부 존은 시간을 효율적으로 관리해야 한다는 걸 깨달았다. 그는 N개의 해야할 일에 (1=0: suc_all = True for i in range(works): if start + task[i][0] > task[i][1]: t -= 1 start = t suc_all = False break; start += task[i][0] # t일 때 모든 순회를 통과하면? # 그게 정답 if suc_all: print(t) break if t task[k][1]: task[i], task[k] = task[k], task[i] elif task[i][1] == task[k][1]: if task[i][0] > .. 2022. 5. 20.
[Python] 백준 1789 - 수들의 합 https://www.acmicpc.net/problem/1789 1789번: 수들의 합 첫째 줄에 자연수 S(1 ≤ S ≤ 4,294,967,295)가 주어진다. www.acmicpc.net 해결방법 val = 1에서 N을 계속 'N - val(N 빼기 val)' 해주며 N이 val보다 작아거나 같아지지 않게 만들면 된다. 코드 N = int(input()) - 1 val = 1 while val 2022. 5. 20.
[Python] 백준 5747 - Odd or Even https://www.acmicpc.net/problem/5747 문제 '홀짝' 게임에는 여러가지 방식이 존재한다. 그중 한가지 방법은 두 사람이 각자 '홀수', '짝수' 중 하나를 말한다. 그러고서 셋을 센다('셋, 둘, 하나!'). '하나!'에서 두 사람은 한 손으로 0부터 5까지의 수를 손가락의 개수로 표현한다. 만약 두 사람이 내민 손가락의 수를 세었을 때 합이 짝수라면 처음 짝수를 외친 사람이 승리하고, 반대로 홀수라면 처음 홀수를 외친 사람이 승리한다. 존과 매리는 이 홀짝 게임을 몇 판하려고 한다. 홀수를 좋아하는 존은 모든 판에서 홀수를 고르기로 했고, 매리는 짝수를 고르기로 했다. 존과 매리는 각 경기의 카드를 보면서 나중에 결과를 다시 확인하기 위해 게임을 하는 동안 각자의 카드에 자신.. 2022. 5. 8.
[Python] 백준 1439 - 뒤집기 https://www.acmicpc.net/problem/1439 1439번: 뒤집기 다솜이는 0과 1로만 이루어진 문자열 S를 가지고 있다. 다솜이는 이 문자열 S에 있는 모든 숫자를 전부 같게 만들려고 한다. 다솜이가 할 수 있는 행동은 S에서 연속된 하나 이상의 숫자를 잡고 모 www.acmicpc.net 해결방법 제가 풀이한 해결 방법은 두 가지가 있습니다. 하나는 문자열을 전부 읽어 들이는 방법, 다른 하나는 split 함수를 이용하는 방법이 있습니다. 방법 1. import math string = input() L = len(string) cnt = 0 for i in range(L-1): if string[i] != string[i+1]: cnt += 1 cnt /= 2 print(math.. 2022. 5. 7.
[Python] 백준 9237 - 이장님 초대 https://www.acmicpc.net/problem/9237 해결방법 자라는 데에 가장 오래 걸리는 나무부터 가장 빠르게 자라는 나무순으로 배열을 정렬한다. 즉, 내림차순으로 정렬한다는 이야기이다. 나무 한 그루를 심는 데에 꼬박 하루씩이나 걸리니 1일부터 주어진 나무의 수만큼의 일수가 필요하다. 그리고 나무가 자라는 시간까지도 필요하다. 주어진 예제를 통해 이해해보자. 예제 입력 1 4 2 3 4 3 풀이 4그루의 나무를 심는다. 주어진 배열(나무가 자라는 데에 필요한 일 수)을 내림차순으로 정렬하면 [4, 3, 3, 2]가 되겠다. 다 자란 다음날에 이장님을 초대할 것이므로 첫 번째 나무는 1일에 심어지고 자라는 데에 4일이 더 걸리므로 6(5+1)일에, 두 번째 나무는 2일에 심어지고 자라는 .. 2022. 5. 6.