개발자/C or C++

백준 5543번 [C/C+]

Mosser 2021. 10. 5.
728x90
반응형

문제

해결 방법

이 문제는 단품 메뉴와 세트메뉴 각각을 배열로 값을 입력 받아서 단품 메뉴의 값을 입력 받은 후, 세트메뉴의 가격을 직접 구하여, 배열에 집어 넣은 후, 세트 메뉴 배열 안에서 최솟값을 찾아서 출력하는 방식으로 문제를 풀었습니다.

소스코드

#include <stdio.h>

int main(){
	int single[5];
	int set[6];
	int i=0;

	for(i=0;i<5;i++){
		scanf("%d",&single[i]);
	}

	set[0]=single[0]+single[4]-50;
	set[1]=single[0]+single[3]-50;
	set[2]=single[1]+single[4]-50;
	set[3]=single[1]+single[3]-50;
	set[4]=single[2]+single[4]-50;
	set[5]=single[2]+single[3]-50;

	int min=set[0];
	for(i=1;i<6;i++){
		if(min>set[i])
			min=set[i];
	}

	printf("%d\n",min);
}

 

조금 아쉬운 점은 세트메뉴의 값을 구할 때, 반복문을 이용해서 구해보려고 했지만, 쉽게 알고리즘이 떠오르지 않아서 수기로 집어 넣었다는점이 조금 아쉽습니다.

다른 인터넷 자료를 찾아봤는데 버거 배열과 음료수 배열을 따로 만들어서 버거 배열을 입력받을 때, 최솟값과 음료수 배열을 입력받을 때의 최솟값을 더해서 값을 구하는 방식이 있는 것 같습니다.

다른 방법

 

 

#include <stdio.h>

int main(){

	int burger[3];
	int beverage[2];

	int i=0;
	int burgerMin=9999;
	int bevMin=9999;
	for(i=0;i<3;i++){
		scanf("%d",&burger[i]);

		if(burgerMin>burger[i]){
			burgerMin=burger[i];
		}
			
	}

	for(i=0;i<2;i++){
		scanf("%d",&beverage[i]);
		if(bevMin>beverage[i])
			bevMin=beverage[i];
	}


	printf("%d\n",burgerMin+bevMin-50);
}

 

실행결과

 

반응형

'개발자 > C or C++' 카테고리의 다른 글

백준 2446번 [C/C+]  (0) 2021.10.05
백준 2523번 [C/C+]  (0) 2021.10.05
백준 10039번 [C/C+]  (0) 2021.10.05
백준 1110번 [C/C+]  (0) 2021.10.05
백준 10951번 [C/C+]  (0) 2021.10.05

댓글