5543 상근날드

Updated:

5543 상근날드

[Baekjoon] 5543 상근날드, 문제 풀이.
프로그래밍 언어: C

문제

5543 상근날드

접근

접근은 쉬웠다. 햄버거 3종류 중 가장 가격이 낮은 값을 최솟값으로, 음료수 2종류도 마찬가지로 구하고, 둘을 더하고 -50을 해준다.

	result = min_h + min_d - 50;	// 주어진 계산식

min_h은 햄버거 중 최솟값, min_d는 음료수 중 최솟값이다.
처음 막혔던 곳은 입력을 공백 기준이 아닌 한 줄마다 받는 곳이었다. 아직 Python 티를 다 못벗었고, C 언어를 시작한지 3일밖에 안되서 한 줄마다 받는 명령어가 따로 있다고 생각했다. 하지만 C 언어에서는 그냥 공백이나 한 줄을 띄어도 되는 것을 확인했다.

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

user_input[5]은 유저의 입력값을 저장하는 배열이며, 이 배열의 요소값을 비교하여 최솟값을 구할 것이다.
최솟값을 구하는 방식은 2480 주사위 세개에서 사용한 삼항 연산자를 사용할 것이다. 다만, 최댓값과 다르게 더 작은 값을 가져와야 하기 때문에 부등호의 방향을 바꾸어 주었다.

	min_h = (user_input[0] < user_input[1]) ? user_input[0] : user_input[1];	// 삼항 연산자 이용하여 최솟값 계산
	min_h = (min_h < user_input[2]) ? min_h : user_input[2];
	min_d = (user_input[3] < user_input[4]) ? user_input[3] : user_input[4];

햄버거의 경우 3개를 비교해야하기 때문에 2번 반복하였고, 음료수의 경우는 2개중 하나이니 1번만 사용하였다.

전체 코드

#include <stdio.h>

int main(void)
{
	int user_input[5] = { 0 };
	int ham = 0;
	int drink = 0;
	int min_h = 0;	// 햄버거 최솟값
	int min_d = 0;	// 음료수 최솟값
	int result = 0;

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

	min_h = (user_input[0] < user_input[1]) ? user_input[0] : user_input[1];	// 삼항 연산자 이용하여 최솟값 계산
	min_h = (min_h < user_input[2]) ? min_h : user_input[2];
	min_d = (user_input[3] < user_input[4]) ? user_input[3] : user_input[4];
	result = min_h + min_d - 50;	// 주어진 계산식

	printf("%d", result);

	return 0;
}

개선 및 부족한 사항

  • scanf() 함수의 사용이 미숙하다.

Leave a comment