algorithm/Greedy 12

백준 5014 카드 정렬하기

https://www.acmicpc.net/problem/1715 1715번: 카드 정렬하기 정렬된 두 묶음의 숫자 카드가 있다고 하자. 각 묶음의 카드의 수를 A, B라 하면 보통 두 묶음을 합쳐서 하나로 만드는 데에는 A+B 번의 비교를 해야 한다. 이를테면, 20장의 숫자 카드 묶음과 30장 www.acmicpc.net 📌 해결 과정 heap 자료구조의 장점을 정말 잘 느낄수 있는 문제이다. 먼저, 그리디 방식으로 이 문제에 접근해보면 비교횟수의 최솟값을 구해야 하므로 언제 비교횟수가 크게 증가하는지에 대해 생각해볼 필요가 있다. 카드 수가 많은 묶음일수록 최대한 마지막에 비교할 수 있도록 해야한다 예를 들어서, 묶음의 수 : 6 각 묶음에 속한 카드 : [20, 30, 40, 50, 60, 80]..

algorithm/Greedy 2022.11.03

백준 11000 강의실 배정

https://www.acmicpc.net/problem/11000 11000번: 강의실 배정 첫 번째 줄에 N이 주어진다. (1 ≤ N ≤ 200,000) 이후 N개의 줄에 Si, Ti가 주어진다. (0 ≤ Si < Ti ≤ 109) www.acmicpc.net 📌 해결순서 회의실 배정 [백준] 파이썬 1931 : 회의실 배정 https://www.acmicpc.net/problem/1931 1931번: 회의실 배정 (1,4), (5,7), (8,11), (12,14) 를 이용할 수 있다. www.acmicpc.net 문제 한 개의 회의실이 있는데 이를 사용하고자 하는 N개의 회의에 대하여 회의실.. hwdev.tistory.com 신입사원 [백준] 파이썬 1946 : 신입사원 https://www.a..

algorithm/Greedy 2022.10.13

백준 18234 당근 훔쳐 먹기

https://www.acmicpc.net/problem/18234 18234번: 당근 훔쳐 먹기 첫 번째 줄에 N(1 ≤ N ≤ 200,000)과 T(N ≤ T ≤ 100,000,000)가 공백으로 구분되어 주어진다. 오리는 당근의 맛을 충분히 높이기 위해 항상 N이상인 T일 동안 재배한다. 다음 N개의 줄에 걸쳐서 i+1번째 www.acmicpc.net 시험기간이지만 알고리즘을 풀고 싶었다,, 사실 CS 재미도 없고 하기 싫어서 풀었다 ㅎㅎ,, 죄송합니다 출처 다 읽고 해결과정 노트에 적고 '어.. 이거 쉽게 풀겠는데? 왜 골3이지' 이 생각 했는데 시간초과 📌 해결순서 2번째 예시를 이용하면 파란색 동그라미를 친 7 + 24 + 38 = 69 가 토끼가 먹을수 있는 당근의 맛 최대 합이다. 토끼는 ..

algorithm/Greedy 2022.10.13

프로그래머스 조이스틱

https://school.programmers.co.kr/learn/courses/30/lessons/42860 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 📌 해결 순서 문제 다 읽자마자 한 단어마다 A로 다시 이동하는데 필요한 조이스틱 이동 횟수를 담아두는 배열을 만들어 두면 편할것 같다는 생각이 들어서 우선 만들고 시작했다. 이제 해결해야 되는건 좌, 우 이동을 어떻게 할것이냐 인데,, 좀 까다롭다 이미 A로 만들어져 있는 문자에 대해선 조이스틱을 움직일 필요가 없으므로, 좌 우 이동만 하면 되는데 문제는 어떻게 이동 횟수를 최소로 만들것이냐에 ..

algorithm/Greedy 2022.09.28

프로그래머스 체육복

https://school.programmers.co.kr/learn/courses/30/lessons/42862 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 📌 해결순서 여벌의 체육복이 있는 학생이라고 해서 무조건 도난당한 학생에게 체육복을 빌려줄 수 없음에 유의해야 했다 여벌의 체육복이 있어도 그 학생이 체육복을 도난 당했으면 체육복이 현재 1개밖에 없기 때문에 빌려줄 수 없다. 그래서, 모든학생이 체육복을 하나씩 다 가지고 있다고 가정하고 출발 해봤다. 도난 당하면 -1, 여분이 있는 학생이면 +1 그리고, 여분이 있는데 도난 낭했으면 +1 -1 ..

algorithm/Greedy 2022.09.28

백준 1339 단어수학

https://www.acmicpc.net/problem/1339 1339번: 단어 수학 첫째 줄에 단어의 개수 N(1 ≤ N ≤ 10)이 주어진다. 둘째 줄부터 N개의 줄에 단어가 한 줄에 하나씩 주어진다. 단어는 알파벳 대문자로만 이루어져있다. 모든 단어에 포함되어 있는 알파벳은 최대 www.acmicpc.net 📌 해결순서 알파벳을 숫자로 바꾸는 현재시점에서 할수 있는 최선은? 예제의 ACDEB를 숫자로 바꾸면 98753 이 되는데 A를 9로 바꾼 이유는? 숫자의 최댓값을 구하기 위해서 자릿수가 가장 큰 자리에 가장 큰 수를 주면 된다. A의 자릿수는 만의자리 , 10000 이기 때문에 가장 큰 수인 9로 바꾼다 1. 숫자의 자릿수를 저장하는 딕셔너리를 만든다 2. 알파벳이 key, 그 알파벳을 숫..

algorithm/Greedy 2022.09.04

백준 2839 설탕배달

https://www.acmicpc.net/problem/2839 2839번: 설탕 배달 상근이는 요즘 설탕공장에서 설탕을 배달하고 있다. 상근이는 지금 사탕가게에 설탕을 정확하게 N킬로그램을 배달해야 한다. 설탕공장에서 만드는 설탕은 봉지에 담겨져 있다. 봉지는 3킬로그 www.acmicpc.net 📌 해결순서 1. 사용하는 봉지의 갯수를 최소화 해야 하므로, 3kg 보다 5kg를 최대한 많이 이용해야한다. 2. 설탕의 무게가 5로 나누어질 때까지 3을 빼주고 cnt += 1 을 해준다. 3. while 문을 빠져나왔을때 설탕의 무게가 음수라면 정확하게 N kg를 만들수 없음을 의미한다. 📌 코드 while문 에서도 else를 사용해서 훨씬 코드를 간결하게 만들수 있다. import sys input ..

algorithm/Greedy 2022.08.29

백준 1744 두 수 묶기

https://www.acmicpc.net/problem/1744 1744번: 수 묶기 길이가 N인 수열이 주어졌을 때, 그 수열의 합을 구하려고 한다. 하지만, 그냥 그 수열의 합을 모두 더해서 구하는 것이 아니라, 수열의 두 수를 묶으려고 한다. 어떤 수를 묶으려고 할 때, 위치에 www.acmicpc.net 📌 해결순서 문제를 완전히 이해하는데도 시간이 많이 걸렸고, 두 수를 묶는걸 어떻게 코드로 구현을 해야 하는지에 대해 정말 많은 시간을 써가면서 고민했다.. :( 아래 표는 , 두 수를 묶는 경우에 어떤 수식을 사이에 넣어야지 더 커지는지에 대해 정리한 표이다 숫자 숫자 수식 양수(>1) 양수(>1) * 음수(

algorithm/Greedy 2022.08.29

백준 2812 크게 만들기

https://www.acmicpc.net/problem/2812 2812번: 크게 만들기 N자리 숫자가 주어졌을 때, 여기서 숫자 K개를 지워서 얻을 수 있는 가장 큰 수를 구하는 프로그램을 작성하시오. www.acmicpc.net 📌 해결순서 1 (시간초과) 일단 지워야할 숫자를 다 지우고 나면 남은 숫자는 추가해야하는 숫자들이기 때문에 지우는 방식이 아닌, 시작부터 숫자를 추가해가는 방법을 생각했다 # 추가하는 경우 1. 뒤에 기준 숫자보다 큰 수가 없는 경우 : 기준 숫자의 인덱스 + 남은 사이즈가 배열의 크기를 초과하지 않으면 추가 2. 뒤에 기준 숫자보다 큰 수가 있는 경우 : 그 큰 수의 인덱스 + 남은 사이즈가 배열의 크기를 초과 하면 추가 3. 비교해야하는 수의 갯수와 남은 사이즈가 같은..

algorithm/Greedy 2022.08.28

백준 13305 주유소

https://www.acmicpc.net/problem/13305 13305번: 주유소 표준 입력으로 다음 정보가 주어진다. 첫 번째 줄에는 도시의 개수를 나타내는 정수 N(2 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 인접한 두 도시를 연결하는 도로의 길이가 제일 왼쪽 도로부터 N-1 www.acmicpc.net 📌 해결순서 문제는 길고 복잡해 보이지만 문제를 이해하고 나서, 딱 그리디 유형의 표준문제라고 생각했다. 문제를 이해한 후 내가 생각한 해결 아이디어는 다음과 같다. 1. 첫번째 도시에서 다음 도시로 가기 위해서는 첫번째 도시의 기름 가격이 얼마든지 상관없이 기름가격 * 도로길이 만큼 비용을 사용한다 2. 두번째 도시부터는 첫번째 도시의 기름가격보다 두번째 도시의 기름가격이 더 싸면..

algorithm/Greedy 2022.08.28