💻STUDY/BOJ

[BOJ] Bronze IV 부수기: 열네번째 날

coldNoodlePigeon 2022. 1. 9.
  • 코딩 초보. 효율적인 코드 구현이 아닐 수 있습니다. 
  • 구현언어: Python , C99 
  • 푼 문제:  1330,1712,2420,2480,2525 
  • 못 푼 문제: 0개


1330. 두 수 비교하기

두 정수 A와 B가 주어졌을 때, A와 B를 비교하는 프로그램을 작성하시오.

 

1.C99

#include <stdio.h>
main() {
	int a, b;
	scanf("%d %d", &a, &b);
	if (a == b) {
		printf("==");
	}
	else if (a > b) {
		printf(">");
	}
	else {
		printf("<"); 
	}
}

 

2.Python

a,b=map(int,input().split(" "))
if a<b:
    print("<")
elif a>b:
    print(">")
elif a==b:
    print("==")

if조건문으로 출력 조건 만들어주는 쉬운 문제. 


1712. 손익분기점 

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

예를 들어 A=1,000, B=70이라고 하자. 이 경우 노트북을 한 대 생산하는 데는 총 1,070만원이 들며, 열 대 생산하는 데는 총 1,700만원이 든다.

노트북 가격이 C만원으로 책정되었다고 한다. 일반적으로 생산 대수를 늘려 가다 보면 어느 순간 총 수입(판매비용)이 총 비용(=고정비용+가변비용)보다 많아지게 된다. 최초로 총 수입이 총 비용보다 많아져 이익이 발생하는 지점을 손익분기점(BREAK-EVEN POINT)이라고 한다.

A, B, C가 주어졌을 때, 손익분기점을 구하는 프로그램을 작성하시오.

 

1.C99

#include <stdio.h>
main() {
	int a, b, c;
	scanf("%d %d %d", &a, &b, &c);
	printf("%d",(c<=b)? -1: a/(c-b)+1);
}

A+ Bx < Cx 방정식을 구하는 문제다. (x는 손익분기점) 이때 B가 C보다 크면 x의 값이 음수가 되어버리므로, 삼항연산자를 사용하여 이 경우에는 무조건 -1을 출력하도록 만들었다. 이때 주의할점은, 만약에 B와 C가 같은 값을 가지고 있을때, 조건식을 c<b 로 해놓으면 division by zero error가 발생한다. 어차피 b와 c가 같으면 손익분기점이 없으므로 그대로 -1을 출력하도록 c<=b 로 조건식을 작성해야만 한다! 

 

2.Python

a,b,c=map(int,input().split())
if (b>=c):
    print(-1)
else:
    print(a//(c-b)+1)

파이썬도 c언어와 비슷하게 구현하면 된다. 


2420. 사파리월드

사파리월드는 인터넷으로만 존재하는 미스테리한 나라이다. 사파리월드에는 2개의 서브도메인이 seunghwan.royal.gov.sw와 kyuhyun.royal.gov.sw 이 있는데, 이것이 couple.royal.gov.sw으로 합쳐질 것이다. 그러나 도메인 관리 센터 SWNIC(센터장: 김동규)에는 엄격한 룰이 있다. 두 서브도메인을 합칠 때, 유명도의 차이가 너무 차이나지 않을 경우에만 두 서브도메인을 결혼시키는 것이다. 서브도메인의 유명도는 정수이다. 두 서브도메인의 유명도가 주어졌을 때, 그 차이를 구하는 프로그램을 작성하시오.

 

1.C99

#include <stdio.h>
main() {
	long n, m;
	scanf("%ld %ld", &n, &m);
	if (n < m) {
		printf("%ld", m - n); 
	}
	else {
		printf("%ld", n - m); 
	}
}

-2,000,000,000 ≤ N, M ≤ 2,000,000,000 이므로 자료형을 long으로 해주었다. 

 

2.Python

n,m=map(int,input().split())
if(n<m):
    print(m-n)
else:
    print(n-m)

2480. 주사위 세개 

1에서부터 6까지의 눈을 가진 3개의 주사위를 던져서 다음과 같은 규칙에 따라 상금을 받는 게임이 있다.

  1. 같은 눈이 3개가 나오면 10,000원+(같은 눈)×1,000원의 상금을 받게 된다. 
  2. 같은 눈이 2개만 나오는 경우에는 1,000원+(같은 눈)×100원의 상금을 받게 된다. 
  3. 모두 다른 눈이 나오는 경우에는 (그 중 가장 큰 눈)×100원의 상금을 받게 된다.  

예를 들어, 3개의 눈 3, 3, 6이 주어지면 상금은 1,000+3×100으로 계산되어 1,300원을 받게 된다. 또 3개의 눈이 2, 2, 2로 주어지면 10,000+2×1,000 으로 계산되어 12,000원을 받게 된다. 3개의 눈이 6, 2, 5로 주어지면 그중 가장 큰 값이 6이므로 6×100으로 계산되어 600원을 상금으로 받게 된다.

3개 주사위의 나온 눈이 주어질 때, 상금을 계산하는 프로그램을 작성 하시오.

 

1.C99

#include <stdio.h>
main() {
	int a, b, c;
	scanf("%d %d %d", &a, &b, &c);
	if (a == b && b == c && a==c) {
		printf("%d", 10000 + a * 1000); 
	}
	else if (a == b || b == c || a == c) {
		printf("%d", (a == b) ? 1000 + a * 100 : (b == c) ? 1000 + b * 100 : 1000 + c * 100);
	}
	else {
		if (a > b && a > c) {
			printf("%d", a * 100);
		}
		else if (b > a && b > c) {
			printf("%d", b * 100);
		}
		else {
			printf("%d", c * 100); 
		}
	}
}

코드가 복잡해보이지만, 그냥 if조건문을 사용하면 되는 아주 간단한 문제다. 마지막 else 블럭에서 삼항 연산자를 사용해도 되지만 너무 길어질까봐 그냥 했다. 

 

2.Python

a,b,c=map(int,input().split())
if (a==b==c):
    print(10000+1000*a)
elif(a==b or b==c or a==c):
    if (a==b):
        print(1000+a*100)
    elif (b==c):
        print(1000+b*100)
    else:
        print(1000+c*100)
else:
    if(a>b and a>c):
        print(a*100)
    elif(b>a and b>c):
        print(b*100)
    else:
        print(c*100)

2525. 오븐 시계

KOI 전자에서는 건강에 좋고 맛있는 훈제오리구이 요리를 간편하게 만드는 인공지능 오븐을 개발하려고 한다. 인공지능 오븐을 사용하는 방법은 적당한 양의 오리 훈제 재료를 인공지능 오븐에 넣으면 된다. 그러면 인공지능 오븐은 오븐구이가 끝나는 시간을 분 단위로 자동적으로 계산한다.

또한, KOI 전자의 인공지능 오븐 앞면에는 사용자에게 훈제오리구이 요리가 끝나는 시각을 알려 주는 디지털 시계가 있다. 

훈제오리구이를 시작하는 시각과 오븐구이를 하는 데 필요한 시간이 분단위로 주어졌을 때, 오븐구이가 끝나는 시각을 계산하는 프로그램을 작성하시오.

 

1.C99

#include <stdio.h>
main() {
	int a, b, c;
	scanf("%d %d\n%d", &a, &b, &c);
	printf("%d %d", ((60 * a + b + c) / 60 >= 24) ? ((60 * a + b + c) / 60)-24 : ((60 * a + b + c) / 60), (60 * a + b + c) % 60);
}

24시가 넘어가면 총 분(minute)에서 60을 나눈 몫에서 24를 빼서 계산한다. 나머지의 경우는 분(minute). 

 

2.Python

a,b=map(int,input().split())
c=int(input())
if ((60*a+b+c)//60 >=24):
    hour=(60*a+b+c)//60-24
else:
    hour=(60*a+b+c)//60
print("%d %d" %(hour,(60*a+b+c)%60))

브론즈 4단계는 왠지 if조건문 활용 파티인것 같다... 

댓글