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

블로그 메뉴

  • 홈
  • 태그
  • 방명록

인기 글

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
DoZZang

Do IT

[C] 백준 1712번 : 손익분기점
Baekjoon

[C] 백준 1712번 : 손익분기점

2023. 1. 18. 17:22
반응형

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

 

1712번: 손익분기점

월드전자는 노트북을 제조하고 판매하는 회사이다. 노트북 판매 대수에 상관없이 매년 임대료, 재산세, 보험료, 급여 등 A만원의 고정 비용이 들며, 한 대의 노트북을 생산하는 데에는 재료비와

www.acmicpc.net

우선 틀린 코드부터

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main() {
    int A, B, C, result, i = 0;
    scanf("%d%d%d", &A, &B, &C);
    while (1)
    {
        if (B >= C) { printf("-1"); break; }
        if (A + (B * i) - (C * i) < 0) { printf("%d", i); break; }
        i++;
    }
    return 0;
}

마지막 예제 입력에서 눈치채긴 했으나 반복문을 이용하다보니 시간초과가 일어났다.

반복문을 안쓰라고 풀라고? 가능한가?

단계별로 풀어보기의 theme이 기본 수학이 아니었다면 풀지 못했을 것이다.

고정비용 = A 가변비용 = B 재화의 가격 = C

손익분기점을 구하려면

A + Bx - Cx(x는 재화의 개수)라는 식이 0보다 작아졌을 때의 x의 값을 구해야한다.

결국 구하려는 것은 x의 값이다.

따라서 x로 정리해보았을 때x < A/(C-B)라는 식이 도출된다.

도출되는 건 좋은데 반복문돌려야하나?

곰곰히 고민해보니 부등식을 등식으로 바꿀 수 있었다.

X = A / (C - B);

X += 1;

더 자세한 설명은 하지 않겠다.

만~약 정답을 위해 보시는 분이 계시다면 보며 이해하려는 것 보다 직접 식을 한 번 세워보심이 더 이해가 빠를 것이다!

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main() {
    int A, B, C, X = 0;
    scanf("%d%d%d", &A, &B, &C);

    if (B >= C)printf("-1");
    else {
        X = A / (C - B);
        printf("%d", X + 1);
    }
    return 0;
}

B가 C보다 같거나 크다면 이익으로 넘어가지 않는다.

 

☞다른 사람의 코드

#include <stdio.h>

int main() {

	int A, B, C;
	scanf("%d %d %d", &A, &B, &C);

	int x = 1;

	if (B >= C) {
		printf("-1");
	}

	else// C>B 인 경우
	{
		x = A / (C - B);
		printf("%d", (int)x + 1);
	}

	
	return 0;
}

 

'/'연산의 경우 항상 자료형을 고려할 것

해이함에 경각심을 주는 코드였다.

사실 정말로 분류가 '기본 수학'이 아니었다면 나는 풀지 못했을 것이다.

반복문이 떠올랐다고 반복문만을 사용할 것인가?

코드를 더 간결하게 작성할 수 없을까?

이 문제를 풀었음에도 그에 대한 자신감이 상승하지 않는다.

더 열심히 하자.

 

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

'Baekjoon' 카테고리의 다른 글

[C] 백준 1193번 : 분수찾기  (0) 2023.01.19
[C] 백준 2292번 : 벌집  (0) 2023.01.18
[C] 백준 2675번 : 문자열 반복  (0) 2023.01.15
[C] 백준 10809번 : 알파벳 찾기  (0) 2023.01.15
[C] 백준 11720번 : 숫자의 합  (0) 2023.01.14
    'Baekjoon' 카테고리의 다른 글
    • [C] 백준 1193번 : 분수찾기
    • [C] 백준 2292번 : 벌집
    • [C] 백준 2675번 : 문자열 반복
    • [C] 백준 10809번 : 알파벳 찾기
    DoZZang
    DoZZang
    과정은 힘들지만 성장은 즐겁습니다.

    티스토리툴바