백준(C언어) 풀이/그리디(Greedy) 알고리즘

백준(C) 2437번 저울 풀이

개발윗미 2021. 8. 6. 14:37

C로 구현한 2437번 저울 문제 풀이입니다.

 

https://www.acmicpc.net/problem/2437

 

2437번: 저울

하나의 양팔 저울을 이용하여 물건의 무게를 측정하려고 한다. 이 저울의 양 팔의 끝에는 물건이나 추를 올려놓는 접시가 달려 있고, 양팔의 길이는 같다. 또한, 저울의 한쪽에는 저울추들만 놓

www.acmicpc.net


#include <stdio.h>

int main() {
	int n, temp, target=1;
	int input[1001];
	scanf("%d", &n);
	for(int i=0; i<n; i++) {
		scanf("%d", &input[i]);
	}
	for(int i=0; i<n; i++) {
		for(int j=0; j<n-(i+1); j++) {
			if(input[j] > input[j+1]) {
				temp = input[j];
				input[j] = input[j+1];
				input[j+1] = temp;
			}	
		}
		
	}
	for(int i=0; i<n; i++) {
		if(target < input[i])
			break;
		target += input[i];
	}
	printf("%d", target);
}

 

첫번째 반복문에서 배열에 각 원소를 입력받는다. 두번째 반복문에서는 변수 temp를 이용하여 정렬을 수행하도록 한다.

 

정렬이 완료된 상태에서 값이 가장 작은 원소 순서대로 값을 누적해가는데, 누적된 값이 해당 원소보다 작을 경우에

 

측정할 수 없기 때문에 반복문을 종료하고 출력한다.