반응형
DoZZang
Do IT
DoZZang
전체 방문자
오늘
어제
  • Programming
    • Git
    • Web
    • 기타
    • Python
      • CodeUp
    • Math
    • Algorithm
    • Baekjoon
    • C,C++
    • Life
      • 독서
      • Just
      • 영화

블로그 메뉴

  • 홈
  • 태그
  • 방명록

인기 글

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
DoZZang

Do IT

[C] 백준 2839번 : 설탕 배달
Baekjoon

[C] 백준 2839번 : 설탕 배달

2023. 1. 25. 19:16
반응형

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

 

2839번: 설탕 배달

상근이는 요즘 설탕공장에서 설탕을 배달하고 있다. 상근이는 지금 사탕가게에 설탕을 정확하게 N킬로그램을 배달해야 한다. 설탕공장에서 만드는 설탕은 봉지에 담겨져 있다. 봉지는 3킬로그

www.acmicpc.net

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main() {
    int x, y, i = 0,size = 0;
    int N;
    int sum[1000] = {0};
    scanf("%d",&N);
    for (int x = 0; x <= 1000; x++) {
        for (int  y = 0; y < 1667; y++) {
            if (5 * x + 3 * y == N) {
                sum[i] = x + y;
                i++;
                size = i;
            }
        }
    }
    if (sum[0] == 0) { printf("-1"); }
    else {
        int min = sum[0];
        for (int i = 1; i < size; i++) {
            if (sum[i] < min) { min = sum[i]; }
        }
        printf("%d",min);
    }
 
    return 0;
}

문제에서 요구한 것은

1. 5든 3이든 나눴을 때 나머지가 반드시 0이어야한다.

2.나눴을 때의 몫의 합이 최솟값이야한다.

18이라는 숫자가 N으로 주어졌다면

3으로 6번 나눠떨어지게 할 수 있지만 5로 3번 3으로 1번 나눠 4번으로 최솟값을 얻을 수 있다.

 

보자마자 떠오른 것은 방정식이다.

5x+3y가 N이 될때의 x+y의 최솟값을 구하기

문제에서 N의 범위는 3이상 5000이하였기 때문에X는 1000이하 Y는 1667미만으로 반복문의 범위를 설정할 수 있었다.

 

다시 5x+3y = N을 충족시키는 x와 y의 값의 합이 최솟값일 때를 구해야하는데 바로 판별할 수 없으므로

우선 x와 y의 값의 합을 보관할 수 있는 정수형 배열을 선언하였다.

배열의 크기를 처음에 100으로 선언하였는데런타임 에러(OutofBounds)가 뜬 것을 보아

방정식의 해의 경우의 수가 100개 넘을 수 있다고 인지하고 1000으로 선언하였는데 맞았다.

사실 정확히 모르겠다. 혹시나 보게되신다면 알려주실 분이 계시면 정말 감사하겠습니다.

 

그 다음은 흔히 아는 최솟값 구하듯이 반복문을 구성해주면 되는데

13번째 줄에 size변수를 정의함으로써 몫의 합 중 최솟값을 판별할 때의 반복문의 범위를 설정해줄 수 있다.

만약 17같이 방정식의 해가 존재하지 않는다면 sum배열의 0번째 원소는 0일 것이고

최솟값 판별할 필요 없이 바로 -1을 출력해주면 된다.

반응형
저작자표시 (새창열림)

'Baekjoon' 카테고리의 다른 글

[C] 백준 2581번 : 소수  (0) 2023.01.26
[C] 백준 1978번 : 소수 찾기  (0) 2023.01.26
[C]백준 1316번 : 그룹 단어 체커  (0) 2023.01.25
[C] 백준 2775번 : 부녀회장이 될테야  (0) 2023.01.20
[C] 백준 10250번 : ACM 호텔 (개선)  (0) 2023.01.19
    'Baekjoon' 카테고리의 다른 글
    • [C] 백준 2581번 : 소수
    • [C] 백준 1978번 : 소수 찾기
    • [C]백준 1316번 : 그룹 단어 체커
    • [C] 백준 2775번 : 부녀회장이 될테야
    DoZZang
    DoZZang
    과정은 힘들지만 성장은 즐겁습니다.

    티스토리툴바