알고리즘/백준 문제풀이

문제 링크 : https://www.acmicpc.net/problem/2309 2309번: 일곱 난쟁이 아홉 개의 줄에 걸쳐 난쟁이들의 키가 주어진다. 주어지는 키는 100을 넘지 않는 자연수이며, 아홉 난쟁이의 키는 모두 다르며, 가능한 정답이 여러 가지인 경우에는 아무거나 출력한다. www.acmicpc.net 문제 왕비를 피해 일곱 난쟁이들과 함께 평화롭게 생활하고 있던 백설공주에게 위기가 찾아왔다. 일과를 마치고 돌아온 난쟁이가 일곱 명이 아닌 아홉 명이었던 것이다. 아홉 명의 난쟁이는 모두 자신이 "백설 공주와 일곱 난쟁이"의 주인공이라고 주장했다. 뛰어난 수학적 직관력을 가지고 있던 백설공주는, 다행스럽게도 일곱 난쟁이의 키의 합이 100이 됨을 기억해 냈다. 아홉 난쟁이의 키가 주어졌을 때..
문제 링크 : www.acmicpc.net/problem/2839 2839번: 설탕 배달 상근이는 요즘 설탕공장에서 설탕을 배달하고 있다. 상근이는 지금 사탕가게에 설탕을 정확하게 N킬로그램을 배달해야 한다. 설탕공장에서 만드는 설탕은 봉지에 담겨져 있다. 봉지는 3킬로그 www.acmicpc.net 관련 알고리즘 : 그리디 알고리즘(탐욕 알고리즘), 동적 계획법 아이디어) 2가지 방법으로 풀어봤다. 그리디) 처음 설탕을 가져갈 때 5kg짜리로 최대한 많이 담고, 남은 설탕을 3kg으로 가져감. 만약 5kg으로 최대한 담고 3kg으로 나머지를 담는데, 나눠떨어지지 않으면 5kg를 하나 빼고 다시 3kg을 담음. 5kg를 다 뺐지만, 3kg만으로 설탕이 나눠지지 않으면, -1을 출력. 동적 계획법)cach..
문제설명 문제출처 : www.acmicpc.net/problem/10828 10828번: 스택 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 www.acmicpc.net 간략한 설명 : Stack을 구현할 수 있는지에 대한 문제. 메인 필요지식 : 자료구조 Stack 문제풀이 아이디어 Stack을 연결리스트를 이용해서 구현. 배열을 이용해서 구현해도 되지만, 동적으로 할당하고 싶어서 연결리스트를 이용했다. 사전에 구현되어 있는 C++의 Stack 표준 라이브러리를 사용해도 되지만, Stack을 복습하는 차원에서 처음부터 끝까지 구현해 보았..
문제설명 출처 : www.acmicpc.net/problem/4344 4344번: 평균은 넘겠지 대학생 새내기들의 90%는 자신이 반에서 평균은 넘는다고 생각한다. 당신은 그들에게 슬픈 진실을 알려줘야 한다. www.acmicpc.net 평균을 넘는 학생 수 의 비율을 출력하는 문제. 문제풀이 아이디어 그냥 문제의 흐름대로 단순하게 계산. 배열의 길이를 동적으로 할당. 코드 #include #include using namespace std; int main() { int testCase; double average=0; int count = 0; //평균을 넘는 학생 수 cin >> testCase; for (int i = 0; i > N; int..
문제설명 출처: www.acmicpc.net/problem/8958 8958번: OX퀴즈 "OOXXOXXOOO"와 같은 OX퀴즈의 결과가 있다. O는 문제를 맞은 것이고, X는 문제를 틀린 것이다. 문제를 맞은 경우 그 문제의 점수는 그 문제까지 연속된 O의 개수가 된다. 예를 들어, 10번 문제의 점수 www.acmicpc.net 간략 설명 : O가 나올 때마다 점수가 1씩 증가하다가, X를 만나면 증가하던 점수가 1로 초기화 문제풀이 아이디어 문제 풀이 아이디어 : X를 만날 때까지 카운트를 1씩 증가시켜서 점수에 더하다가 X를 만나면 카운트를 1로 다시 초기화 코드 #include #include using namespace std; int main() { int N; int sum = 0; int..
숫자 개수 세기 #include using namespace std; int main() { int a, b, c; int result; int arr[10] = { 0 }; //각 자리수의 변수에 저장 cin >> a >> b >> c; //숫자 입력 result = a * b * c; while (result != 0) { arr[result % 10] += 1; result /= 10; } for (int i = 0; i < 10; i++) { cout
#include using namespace std; int main() { int max = 0; int idx = 0; int arr[9] = { 0 }; for (int i = 0; i > arr[i]; if (arr[i] > max) { max = arr[i]; idx = i; } } cout
사용한 메인 알고리즘 : 탐욕 알고리즘(greedy algorithm) #include using namespace std; int main() { int Pay; int result=0; cin >> Pay; Pay = 1000 - Pay; result += Pay / 500; Pay %= 500; result += Pay / 100; Pay %= 100; result += Pay / 50; Pay %= 50; result += Pay / 10; Pay %= 10; result += Pay / 5; Pay %= 5; result += Pay / 1; cout
ya_ya
'알고리즘/백준 문제풀이' 카테고리의 글 목록 (3 Page)