본문 바로가기

# 프로그래밍 개발/04. 알고리즘 문제풀이

백준 알고리즘 5543번 [상근날드] 문제 풀이 코드 공개 - 수학 문제

반응형

백준 알고리즘 5543번 상근날드

문제

상근날드에서 가장 잘 팔리는 메뉴는 세트 메뉴이다. 주문할 때, 자신이 원하는 햄버거와 음료를 하나씩 골라, 세트로 구매하면, 가격의 합계에서 50원을 뺀 가격이 세트 메뉴의 가격이 된다.

햄버거는 총 3종류 상덕버거, 중덕버거, 하덕버거가 있고, 음료는 콜라와 사이다 두 종류가 있다.

햄버거와 음료의 가격이 주어졌을 때, 가장 싼 세트 메뉴의 가격을 출력하는 프로그램을 작성하시오.

입력

입력은 총 다섯 줄이다. 첫째 줄에는 상덕버거, 둘째 줄에는 중덕버거, 셋째 줄에는 하덕버거의 가격이 주어진다. 넷째 줄에는 콜라의 가격, 다섯째 줄에는 사이다의 가격이 주어진다. 모든 가격은 100원 이상, 2000원 이하이다.

출력

첫째 줄에 가장 싼 세트 메뉴의 가격을 출력한다.

예제 입력과 결과 이미지 표시

출처

Olympiad > Japanese Olympiad in Informatics > Japanese Olympiad in Informatics Qualification Round > JOI 2012 예선 1번

  • 문제를 번역한 사람: baekjoon
  • 문제의 오타를 찾은 사람: eric00513

알고리즘 분류

에... 이것도 틀렸어..? 넌 뭐하는 녀석이야

 

 

먼저 틀린 코드를 보도록 하겠습니다. 

#include<stdio.h>
int main(){
	int a[5];
	for(int i = 0 ; i < 5; i++){
		scanf("%d",&a[i]);
	}
	int min = a[0];
	int minn = a[3];
	for(int i = 1 ; i < 3; i++){
		if(min > a[i]);
			min = a[i];
	}
	if(minn > a[4]);
		minn = a[4];
	printf("%d\n",min+minn-50);
}

음... 이렇게 봐서는 뭐가 틀린 것인지 잘 모르겠네요

 

아래는 정답코드입니다. 

#include<stdio.h>
int main(){
	int arr[5];
	for(int i = 0 ; i < 5 ; i++){
		scanf("%d",&arr[i]);
	}
	int min[2] = {arr[0],arr[3]};
	for(int i = 1 ; i < 3; i++){
		if(min[0] > arr[i])
			min[0] = arr[i];
	}
	if(min[1] > arr[4])
		min[1] = arr[4];
	printf("%d\n",min[0]+min[1]-50);
}

그런데.. 5년 전의 저는 정말 코드를 대충 작성했다는 것이 팍팍 느껴지네요. 뭔가 먼지를 잘 모르겠어요!! 

그래서 다시 작성해보도록 하겠습니다! 

 

python 코드로 작성을 했고요! 

burger = [int(input()) for i in range(3)]
drink = [int(input()) for i in range(2)]
print(min(burger) + min(drink) - 50)

훨씬 깔끔한 것 같습니다! 

 

이상 다이어릿이었습니다! 

반응형