일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 |
- 알아볼것
- 마크다운
- Til
- 코테
- 코딩테스트
- 내주말
- 스탠다드
- 프로그래머스
- 분반별학습
- 오블완
- input system
- 내배캠
- 스파르타내일배움캠프TIL
- 유니티
- string배열과 char
- 스파르타내일배움캠프
- 피셔예이츠
- 내일배움캠프
- 스파르타부트캠프
- 텍스트게임
- 스파르타
- 최종프로젝트
- Input Field
- projectl
- 티스토리챌린지
- Action
- 분반별
- 스파르타내배캠til
- 코테풀기
- 백준
- Today
- Total
Ottoman
BAEKJUN 11047번 [C#] 동전 0 그리고 DateTime 본문
그리디 알고리즘 SILVER 4
동전 0
문제
준규가 가지고 있는 동전은 총 N종류이고, 각각의 동전을 매우 많이 가지고 있다.
동전을 적절히 사용해서 그 가치의 합을 K로 만들려고 한다. 이때 필요한 동전 개수의 최솟값을 구하는 프로그램을 작성하시오.
입력
첫째 줄에 N과 K가 주어진다. (1 ≤ N ≤ 10, 1 ≤ K ≤ 100,000,000)
둘째 줄부터 N개의 줄에 동전의 가치 Ai가 오름차순으로 주어진다. (1 ≤ Ai ≤ 1,000,000, A1 = 1, i ≥ 2인 경우에 Ai는 Ai-1의 배수)
출력
첫째 줄에 K원을 만드는데 필요한 동전 개수의 최솟값을 출력한다.
생각
그리디 알고리즘은 효율상관없이 되는대로 실행하면 되는거로 알고있다.
높은 단위부터 K에 뺄셈연산해서 양수나 0이 나오면 연산횟수를 늘리고 K가 0이 될 때까지 반복하자.
제출코드
public class CodingTest
{
public static void Main()
{
Console.WriteLine(Greedy());
int Greedy()
{
// 입력부
string NandK = Console.ReadLine();
string[] ss = NandK.Split(' ');
int N = int.Parse(ss[0]); // 종류
int K = int.Parse(ss[1]);
int calculateCount = 0;
int[] inputNs = new int[N];
for(int i =0; i < N; i++)
{
inputNs[i] = int.Parse(Console.ReadLine());
}
// 입력부 끝
// 구현
while (K != 0)
{
for (int i = inputNs.Length - 1; i >= 0; i--)
{
if (K == 0) return calculateCount;
else if (K - inputNs[i] >= 0)
{
K -= inputNs[i];
calculateCount++;
break;
}
// Console.Write(K); Console.WriteLine(" " + calculateCount);
}
}
return calculateCount;
}
}
}
// 소감
내 코드의 실행시간은 164ms인데 다른 사람이 한 코드는 64ms가 나온걸 보니 어떤 부분이 다른지 살펴봤는데
for(int i = 0; i < n; i++)
{
if((k/value[i]) >= 1)
{
//Console.WriteLine($"{value[i]}원");
result += k/value[i];
k = k%value[i];
}
}
K의 값을 같은 i에서 뺄셈하는 횟수를 나눗셈의 몫으로 한 번에 얻어냈다.
관련 링크
탐욕 알고리즘 - 위키백과, 우리 모두의 백과사전 (wikipedia.org)
탐욕 알고리즘 - 위키백과, 우리 모두의 백과사전
위키백과, 우리 모두의 백과사전. 탐욕 알고리즘(Greedy algorithm)은 최적해를 구하는 데에 사용되는 근사적인 방법으로, 여러 경우 중 하나를 결정해야 할 때마다 그 순간에 최적이라고 생각되는
ko.wikipedia.org
그리디 알고리즘
그리디 알고리즘 (욕심쟁이 알고리즘, Greedy Algorithm)이란 "매 선택에서 지금 이 순간 당장 최적인
namu.wiki
Greedy Algorithm(그리디 알고리즘) 개념, 추천 문제 (tistory.com)
Greedy Algorithm(그리디 알고리즘) 개념, 추천 문제
저번 포스팅 #1 에서 언급했듯이 이번 포스팅은 알고리즘 유형 학습 중 첫 번째 알고리즘인 '그리디 알고리즘(Greedy Algorithm)'의 개념과 문제를 풀기 전 알아야 하는 사전 지식에 대하여 작성해보
it-college-diary.tistory.com
// DateTime
[백준] C# : 오늘 날짜 (10699번) (velog.io)
[백준] C# : 오늘 날짜 (10699번)
DateTime.Today : 현재 날짜 0시 0분 0초 반환DateTime.Now : 현재 년도, 월, 일, 시, 분, 초 반환문자열로 Format 설정\* \[Microsoft] 사용자 지정 날짜 및 시간 서식 문자열referencehttps://drago
velog.io
'코테풀기' 카테고리의 다른 글
두 원의 위치관계 (0) | 2024.10.01 |
---|---|
등차수열 (0) | 2024.09.25 |
BAEKJUN 1302번 [C#] 베스트셀러 (0) | 2024.05.18 |
BAEKJUN 1094번 [C#] 막대기 (0) | 2024.05.17 |
BAEKJUN 1085번 [C#] 직사각형에서 탈출 (0) | 2024.05.12 |