알고리즘 공부/탐욕알고리즘(Greedy) 14

백준 1783(병든 나이트)

문제 병든 나이트가 N × M 크기 체스판의 가장 왼쪽아래 칸에 위치해 있다. 병든 나이트는 건강한 보통 체스의 나이트와 다르게 4가지로만 움직일 수 있다. 2칸 위로, 1칸 오른쪽 1칸 위로, 2칸 오른쪽 1칸 아래로, 2칸 오른쪽 2칸 아래로, 1칸 오른쪽 병든 나이트는 여행을 시작하려고 하고, 여행을 하면서 방문한 칸의 수를 최대로 하려고 한다. 병든 나이트의 이동 횟수가 4번보다 적지 않다면, 이동 방법을 모두 한 번씩 사용해야 한다. 이동 횟수가 4번보다 적은 경우(방문한 칸이 5개 미만)에는 이동 방법에 대한 제약이 없다. 체스판의 크기가 주어졌을 때, 병든 나이트가 여행에서 방문할 수 있는 칸의 최대 개수를 구해보자. 풀이 그림을 그려가며 풀어보니 총 4가지 경우가 있었다. N 이 1인경우 ..

백준 10610 (30) / 배수판별법

문제 어느 날, 미르코는 우연히 길거리에서 양수 N을 보았다. 미르코는 30이란 수를 존경하기 때문에, 그는 길거리에서 찾은 수에 포함된 숫자들을 섞어 30의 배수가 되는 가장 큰 수를 만들고 싶어한다. 미르코를 도와 그가 만들고 싶어하는 수를 계산하는 프로그램을 작성하라. 풀이 30의 배수판별법 0이 있는지 확인 0이 아닌 나머지숫자를 가지고 3의 배수를 만들수 있는지 확인하면 된다. 3의 배수 판별법 전체 자리수의 숫자합이 3의 배수 여야한다. 다른 배수 판별법을 보고싶으면 밑에 링크에서 확인할 수 있다. bhsmath.tistory.com/149 [보충] 배수 판별법 이 페이지는 어떤 수가 2의 배수, 3의 배수, 4의 배수, 9의 배수, 11의 배수가 되는 지를 확인 하는 방법에 대한 페이지입니다..

백준 2875 ( 대회 or 인턴)

문제 백준대학교에서는 대회에 나갈 때 2명의 여학생과 1명의 남학생이 팀을 결성해서 나가는 것이 원칙이다. (왜인지는 총장님께 여쭈어보는 것이 좋겠다.) 백준대학교는 뛰어난 인재들이 많아 올해에도 N명의 여학생과 M명의 남학생이 팀원을 찾고 있다. 대회에 참여하려는 학생들 중 K명은 반드시 인턴쉽 프로그램에 참여해야 한다. 인턴쉽에 참여하는 학생은 대회에 참여하지 못한다. 백준대학교에서는 뛰어난 인재들이 많기 때문에, 많은 팀을 만드는 것이 최선이다. 여러분은 여학생의 수 N, 남학생의 수 M, 인턴쉽에 참여해야하는 인원 K가 주어질 때 만들 수 있는 최대의 팀 수를 구하면 된다. 풀이 (여학생수(N) + 남학생수(M) - 인턴십 참여인원(K)) / 3(여학생 : 2, 남학생 1) = T(인원수를 고려안..

백준 11047(동전 0)

문제 준규가 가지고 있는 동전은 총 N종류이고, 각각의 동전을 매우 많이 가지고 있다. 동전을 적절히 사용해서 그 가치의 합을 K로 만들려고 한다. 이때 필요한 동전 개수의 최솟값을 구하는 프로그램을 작성하시오. 풀이 탐욕알고리즘의 기초문제 동전 거스르기 문제랑 같은 문제라고 보면된다. Greedy Algorithm 은 세가지 조건을 만족해야한다. 해 선택(Selection Procedure) : 지금 당시에 가장 최적인 해를 구한 뒤, 이를 부분해 집합에 추가한다. 적절성 검사(Feasibility Check) : 새로운 부분해 집합이 적절한지 검사한다. 해 검사(Solution Check) : 새로운 부분해 집합이 문제의 해가 되는지 검사한다. 아직 문제의 해가 완성되지 않았다면 1번부터 다시 시작한..