본문 바로가기
Python 문제풀이/백준(baekjoon)

6. python 기본 수학1 - 백준 1712, 백준 2292

by 새싹_v 2022. 9. 14.
728x90


 

 

백준 1712

손익분기점

문제
월드전자는 노트북을 제조하고 판매하는 회사이다. 노트북 판매 대수에 상관없이 매년 임대료, 재산세, 보험료, 급여 등 A만원의 고정 비용이 들며, 한 대의 노트북을 생산하는 데에는 재료비와 인건비 등 총 B만원의 가변 비용이 든다고 한다.
예를 들어 A=1,000, B=70이라고 하자. 이 경우 노트북을 한 대 생산하는 데는 총 1,070만원이 들며, 열 대 생산하는 데는 총 1,700만원이 든다.
노트북 가격이 C만원으로 책정되었다고 한다. 일반적으로 생산 대수를 늘려 가다 보면 어느 순간 총 수입(판매비용)이 총 비용(=고정비용+가변비용)보다 많아지게 된다. 최초로 총 수입이 총 비용보다 많아져 이익이 발생하는 지점을 손익분기점(BREAK-EVEN POINT)이라고 한다.
A, B, C가 주어졌을 때, 손익분기점을 구하는 프로그램을 작성하시오.

입력
첫째 줄에 A, B, C가 빈 칸을 사이에 두고 순서대로 주어진다. A, B, C는 21억 이하의 자연수이다.

출력
첫 번째 줄에 손익분기점 즉 최초로 이익이 발생하는 판매량을 출력한다. 손익분기점이 존재하지 않으면 -1을 출력한다.

#백준 1712

a, b, c = map(int,input().split()) #3개 숫자 입력받음

if b >= c:          #가변비용이 노트북 가격보다 크다면 -1출력
    print(-1)
else:
    print(a//(c-b)+1)   ##총 수입 = 고정비용 + 가변비용
                        #N=판매량
                        #C*N = A+B*N
                        #N = A/(C-B)
                        #a//(c-b) 대 생산했을 때 수입과 비용이 같아지기 때문에 +1부터 수입이 많아지게 된다.

 

 

 

백준 2292

벌집

문제
위의 그림과 같이 육각형으로 이루어진 벌집이 있다. 그림에서 보는 바와 같이 중앙의 방 1부터 시작해서 이웃하는 방에 돌아가면서 1씩 증가하는 번호를 주소로 매길 수 있다. 숫자 N이 주어졌을 때, 벌집의 중앙 1에서 N번 방까지 최소 개수의 방을 지나서 갈 때 몇 개의 방을 지나가는지(시작과 끝을 포함하여)를 계산하는 프로그램을 작성하시오. 예를 들면, 13까지는 3개, 58까지는 5개를 지난다.

입력
첫째 줄에 N(1 ≤ N ≤ 1,000,000,000)이 주어진다.

출력
입력으로 주어진 방까지 최소 개수의 방을 지나서 갈 때 몇 개의 방을 지나는지 출력한다.

원을 그리며 규칙성을 찾아낸다. 아래 코드에 내 방식으로 상세히 적어놨다.

# 백준 2292번

# 2: 2 3 4 5 6 7 (6개) (2번)
# 3: 8 9 10 11 12 13 14 15 16 17 18 19 (12개) (3번)
# 4: 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 (18개) (4번)
# 5: 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 (24개) (5번)

# 규칙은 6의 배수로 증가

N = int(input())

count = 1       #초기 길 개수
room_last_number = 1    #초기 벌집 방 개수
        
while N > room_last_number:         #while 문으로 입력받은 N이 벌집방 마지막 숫자보다 크다는 조건으로 반복문을 돌아줌
    room_last_number += 6 * count   #벌집방 마지막 숫자를 구하기 위해선 +6*count를 해줌
                                    #ex)room_last_number = 1, count= 1 
                                    #   room_last_number = 1 + 6 * 1
                                    #   room_last_number = 7
    count += 1                      #   count = 2
                                    #길 개수가 2인 방의 마지막 숫자는 7
print(count)                        #N = 58을 입력받았경우 while문을 돌다가 room_last_number가 61이 된다면
                                    #while 문을 빠져나옴

 

 

 

 

 

위에 글 내용은 오류 사항이 존재할 수 있습니다!

수정 사항이 있을 시 알려주시면 감사하겠습니다.

728x90

댓글