5543 상근날드
Updated:
5543 상근날드
[Baekjoon] 5543 상근날드, 문제 풀이.
프로그래밍 언어: C
문제
접근
접근은 쉬웠다. 햄버거 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