본문 바로가기

개발/Algorithm

(15)
BAEKJOON Algorithm_2217번 데하! 안녕하세요 DevStone입니다! 그리디 문제 일곱 번째 로프 문제입니다. 저 또한 공부하면서 포스팅하는 거라 제 알고리즘이 최적이거나 정답은 아닙니다! 단순히 참고 용도로 부탁드립니다. 문제 풀이 처음에는 문제가 헷갈렸지만 핵심 문장은 "모든 로프를 사용해야 할 필요는 없으며"입니다. 예를 들어 버틸 수 있는 무개가 3인 로프 하나와 10인로프 하나가 있다면 3인로프 두 개를 사용하는 것보다 굳이 두 개의 로프를 사용하지 않고 두 번째 로프만 사용하는 것이 더 좋습니다. 따라서 로프의 길이를 내림차순으로 나열하고 N을 하나씩 증가시키며 곱하여 그중 가장 큰 값이 들 수 있는 최대 무개라는 걸 알 수 있습니다. 즉 (N번째 로프의 길이 * N) 이라는 식이 세워집니다. 문제 링크 https://w..
BAEKJOON Algorithm_5585번 데하! 안녕하세요 DevStone입니다! 그리디 문제 여섯 번째 거스름돈 문제입니다. 저 또한 공부하면서 포스팅하는 거라 제 알고리즘이 최적이거나 정답은 아닙니다! 단순히 참고 용도로 부탁드립니다. 문제 풀이 이번 11047번 문제에서 한번 경험했던 문제라 빠르게 풀었던 거 같습니다. 우선 물건의 가격을 입력받고 거스름돈(change)이라는 변수를 선언하고 1000-price 값을 할당해줍니다. 거스름돈 리스트를 만들고 카운트를 할 변수를 만들어 줍니다. for문을 통해 money_list에 가장 앞부터 나누어 주고 나눈 값을 카운트에 더해주고, 거스름돈을 나머지로 변경해줍니다. 이 과정을 반복하면 원하는 값을 얻을 수 있습니다. 문제 링크 https://www.acmicpc.net/problem/558..
BAEKJOON Algorithm_1541번 데하! 안녕하세요 DevStone입니다! 그리디 문제 다섯 번째 잃어버린 괄호 문제입니다. 저 또한 공부하면서 포스팅하는 거라 제 알고리즘이 최적이거나 정답은 아닙니다! 단순히 참고 용도로 부탁드립니다. 문제 풀이 우선 문제를 입력받고 숫자를 저장해둘 리스트 num을 선언해줍니다. 단 입력받을 때 split 함수를 사용하여 -를 기준으로 나누어 리스트 형태로 저장합니다. for문을 통하여 리스트 안에 값을 하나씩 꺼내 split를 다시 사용하여 +를 기준으로 분할해 s라는 리스트에 할당합니다. 해당 값들을 모두 더해 total 값에 넣고 num리스트에 append 해줍니다. 마지막으로 for문을 통해 첫 번째 값에 모든 값을 - 해주면 원하는 결과를 얻을 수 있습니다. 문제 링크 https://www.a..
BAEKJOON Algorithm_1931번 데하! 안녕하세요 DevStone입니다! 그리디 문제 네 번째 회의실 배정 문제입니다. 저 또한 공부하면서 포스팅하는 거라 제 알고리즘이 최적이거나 정답은 아닙니다! 단순히 참고 용도로 부탁드립니다. 문제 풀이 문제 처음에 읽고 많이 당황했습니다ㅋㅋ.. 어떻게 접근해야 할지 막막해서 한참 고민하다 일찍 끝나는 회의를 최대한 앞으로 몰면 가장 많은 회의를 할 수 있지 않을까 생각하여 해당 방법으로 작성했습니다. 우선 2차원 배열을 선언해 주었습니다. for문을 통해 시작시간, 종료시간을 입력받습니다. 그 후 sort 함수와 람다식을 활용하여 종료시간을 오름차순으로 정렬해줍니다. 그 뒤 가장 첫 번째 종료시간을 end_time으로 지정해줍니다. (이 과정이 있기 때문에 meeting_cnt를 1로 선언) f..
BAEKJOON Algorithm_11047번 데하! 안녕하세요 DevStone입니다! 그리디 문제 세 번째 동전 0 문제입니다. 저 또한 공부하면서 포스팅하는 거라 제 알고리즘이 최적이거나 정답은 아닙니다! 단순히 참고 용도로 부탁드립니다. 문제 풀이 우선 동전 N값과 그 가치의 합 K 값을 입력합니다. 동전의 종류를 담을 리스트 coin을 선언하고 필요한 동전 개수를 카운트할 coin_cnt를 선언합니다. for문으로 동전의 종류를 입력 받고 리스트를 내림차순으로 정렬하여 금액이 가장 큰 동전의 값이 맨 앞으로 오게 합니다. 이제 for 문으로 coin 값 하나씩 가져와 총합 나누기 i의 값을 coin_cot 개수로 추가해주고 k는 i의 나머지로 변경 후 다음 코인으로 변경 해 반복합니다. 이 과정을 반복해서 동전 개수의 최솟값을 구할 수 있습니..
BAEKJOON Algorithm_11399번 데하! 안녕하세요 DevStone입니다! 그리디 문제 두 번째 ATM 문제입니다. 저 또한 공부하면서 포스팅하는 거라 제 알고리즘이 최적이거나 정답은 아닙니다! 단순히 참고 용도로 부탁드립니다. 문제 풀이 우선 사람 수 N 값을 받고 result 변수를 선언해줍니다. 이제 각 사람별 소요되는 시간을 받을 건데 while문을 사용하여 사람 수에 맞게 입력하지 않으면 다시 입력하도록 설정합니다. 입력된 값은 time이라는 list에 넣어 줍니다. sort함수를 사용하여 오름차순으로 정렬 해 작은 수가 앞으로 오게 합니다. 이제 result 값에 첫 번째 값을 더해준 후 for 문을 이용하여 두 번째 값부터 이전 값을 다음 값에 더한 후 해당 값을 result에 더해주도록 구현합니다. 그러면 우리는 원하는 r..
BAEKJOON Algorithm_2839번 데하! 안녕하세요 DevStone입니다! 그리디 문제 첫 번째 설탕 배달 문제입니다. 문제 풀이 우선 N(설탕)을 입력받습니다. bag라는 봉투 변수를 선언해줍니다. while 문을 이용하여 N이 0보다 같거나 작지 않다면 무한 반복하게 합니다. 설탕이 / 5kg으로 나누어 떨어진다면 break를 해줍니다. 만약 5kg으로 나누어 떨어지지 않는다면 3kg을 빼주고 봉투를 1개 추가해 줍니다. 나누어지지 않을 경우 -1을 출력합니다. 문제링크 https://www.acmicpc.net/problem/2839 2839번: 설탕 배달 상근이는 요즘 설탕공장에서 설탕을 배달하고 있다. 상근이는 지금 사탕가게에 설탕을 정확하게 N킬로그램을 배달해야 한다. 설탕공장에서 만드는 설탕은 봉지에 담겨져 있다. 봉지는 3..
BAEKJOON Algorithm_10998번 ( 1 - 7 ) 데하! 안녕하세요 DevStone입니다! 문제 풀이 문제링크 https://www.acmicpc.net/problem/10998 10998번: A×B 두 정수 A와 B를 입력받은 다음, A×B를 출력하는 프로그램을 작성하시오. www.acmicpc.net 예제 소스는 git에서 확인하실 수 있습니다. https://github.com/Maker-Kim/Study/blob/master/Algorithm/Baekjoon_10998.py Maker-Kim/Study Contribute to Maker-Kim/Study development by creating an account on GitHub. github.com