💻STUDY/BOJ

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

coldNoodlePigeon 2022. 1. 11.
  • 코딩 초보. 효율적인 코드 구현이 아닐 수 있습니다. 
  • 구현언어: Python , C99 
  • 푼 문제:  4299,5532,5543,5575,5596 
  • 못 푼 문제: 0개


4299. AFC 웜블던

첫째 줄에 두 팀 점수의 합과 차가 빈 칸으로 구분되어 주어진다. 축구 점수는 항상 음이 아닌 정수이고, 합과 차는 1000보다 작거나 같은 음이 아닌 정수이다. 

첫째 줄에 두 팀의 경기 결과를 출력한다. 득점을 많이 한 쪽을 먼저 출력한다. 만약, 그러한 합과 차를 갖는 경기 결과가 없다면, -1을 출력한다.

 

1.C99

#include <stdio.h>
main() {
	int a, b,n1,n2;
	scanf("%d %d", &a, &b);
	n2 = (a + b) / 2; 
	n1 = n2 - b; 
	if ((a+b) % 2 !=0 ||n1<0 ||n2<0) {
		printf("-1"); 
	}
	else {
		printf("%d %d", n2, n1);
	}
}

단순 연립방정식 수학 문제. 예외 처리의 경우 합과 차의 합이 2로 나누어떨어져야 하므로 (점수는 늘 음이 아닌 정수이기 때문에 소수가 될 수 없음.) if조건문으로 예외처리를 해준다. n1과 n2가 음수여도 안되므로 이것도 조건문에 처리해준다. 

 

2.Python

a,b=map(int,input().split())
n2=(a+b)//2
n1=n2-b
if ((a+b)%2!=0 or n1<0 or n2<0):
    print(-1)
else:
    print("%d %d" %(n2,n1))

파이썬도 똑같이 코드를 짜주면 된다. C와 큰 차이는 없다. 


5532. 방학 숙제

상근이는 초등학교에 다닐 때, 방학 숙제를 남들보다 먼저 미리 하고 남은 기간을 놀았다. 방학 숙제는 수학과 국어 문제 풀기이다.

방학은 총 L일이다. 수학은 총 B페이지, 국어는 총 A페이지를 풀어야 한다. 상근이는 하루에 국어를 최대 C페이지, 수학을 최대 D페이지 풀 수 있다.

상근이가 겨울 방학동안 숙제를 하지 않고 놀 수 있는 최대 날의 수를 구하는 프로그램을 작성하시오.

 

 

1.C99

#include <stdio.h>
main() {
	int L, A, B, C, D,n1,n2;
	scanf("%d\n%d\n%d\n%d\n%d", &L, &A, &B, &C, &D);
	n1 = (A % C != 0) ? A / C + 1 : A / C;
	n2 = (B % D != 0) ? B / D + 1 : B / D;
	printf("%d", (n1 > n2) ? L-n1 :L- n2); 
}

간단한 수학 문제다. 국어, 수학 숙제 중 가장 오래 걸린 기간을 전체 방학기간 L에서 빼고 출력하면 된다. 단, 나누어떨어지지 않는 경우 나머지 페이지를 풀 하루를 더 더해야하므로 삼항연산자를 이용하였다. 

 

2.Python

L=int(input())
A=int(input())
B=int(input())
C=int(input())
D=int(input())
if(A%C!=0):
    n1=A//C+1
else:
    n1=A//C
if(B%D!=0):
    n2=B//D+1
else:
    n2=B//D

if(n1>n2):
    print(L-n1)
else:
    print(L-n2)

파이썬으로 조금 길게 작성해보았다.

 


5543. 상근날드

상근날드에서 가장 잘 팔리는 메뉴는 세트 메뉴이다. 주문할 때, 자신이 원하는 햄버거와 음료를 하나씩 골라, 세트로 구매하면, 가격의 합계에서 50원을 뺀 가격이 세트 메뉴의 가격이 된다.

햄버거는 총 3종류 상덕버거, 중덕버거, 하덕버거가 있고, 음료는 콜라와 사이다 두 종류가 있다.

햄버거와 음료의 가격이 주어졌을 때, 가장 싼 세트 메뉴의 가격을 출력하는 프로그램을 작성하시오.

 

1.C99

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

단순 if조건문 문제. 가장 가격이 낮은 햄버거를 골라 가장 가격이 낮은 음료와 더해 50을 빼고 출력하면 된다. 

 

2.Python

a=int(input())
b=int(input())
c=int(input())
d=int(input())
e=int(input())

if (c<=a and c<=b):
    cheap=c
elif (b<=a and b<=c):
    cheap=b
else:
    cheap=a

if(d<=e):
    total=cheap+d-50
else:
    total=cheap+e-50
print(total)

5575. 타임 카드

JOI 상사는 직원의 근무시간을 타임 카드로 관리하고있다. 직원들은 전용 장비를 사용하여 타임 카드에 출근 시간을 기록한다. 근무를 마치고 퇴근할 때도 타임 카드에 퇴근 시간을 기록한다. 타임카드에서 사용하는 시간단위는 24 시간제를 사용한다.

보안상의 이유로 직원들의 출근 시간은 7시 이후이다. 또한, 모든 직원은 23시 이전에 퇴근한다. 직원의 퇴근 시간은 항상 출근 시간보다 늦다.

입력으로 JOI 상사의 3 명의 직원 A 씨, B 씨, C 씨의 출근 시간과 퇴근 시간이 주어 졌을 때 각 직원의 근무시간을 계산하는 프로그램을 작성하라.

 

1.C99

#include <stdio.h>
main() {
	int ah1, am1, as1, ah2, am2, as2, bh1, bm1, bs1, bh2, bm2, bs2, ch1, cm1, cs1, ch2, cm2, cs2,a,b,c;
	scanf("%d %d %d %d %d %d", &ah1, &am1, &as1, &ah2, &am2, &as2);
	scanf("%d %d %d %d %d %d", &bh1, &bm1, &bs1, &bh2, &bm2, &bs2);
	scanf("%d %d %d %d %d %d", &ch1, &cm1, &cs1, &ch2, &cm2, &cs2);
	a = ah2 * 3600 + am2 * 60 + as2 - (ah1 * 3600 + am1 * 60 + as1); 
	b = bh2 * 3600 + bm2 * 60 + bs2 - (bh1 * 3600 + bm1 * 60 + bs1);
	c = ch2 * 3600 + cm2 * 60 + cs2 - (ch1 * 3600 + cm1 * 60 + cs1);
	printf("%d %d %d\n",a/3600, a % 3600 /60, a % 3600 % 60);
	printf("%d %d %d\n", b / 3600,b % 3600 / 60, b % 3600 % 60);
	printf("%d %d %d\n", c / 3600,c % 3600 / 60, c % 3600 % 60);
}

단순 시간 계산이다. 파이썬으로 구현해도 코드 차이가 별로 없을 것 같아서 c언어로만 구현했다. 


5596. 시험 점수 

대한고등학교에 재학 중인 민국이와 만세는 4과목(정보, 수학, 과학, 영어)에 대한 시험을 봤다. 민국이와 만세가 본 4과목의 점수를 입력하면, 민국이의 총점 S와 만세의 총점 T 중에서 큰 점수를 출력하는 프로그램을 작성하시오. 단, 서로 동점일 때는 민국이의 총점 S를 출력한다.

 

1.C99

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

브론즈 4는..계속된 if조건문 활용 문제 파티인것 같다. 단순 값 비교 문제다. 

 

2.Python

a,b,c,d=map(int,input().split())
e,f,g,h=map(int,input().split())
if ((a+b+c+d)<(e+f+g+h)):
    print(e+f+g+h)
elif ((a+b+c+d)>(e+f+g+h)):
    print(a+b+c+d)
else:
    print(a+b+c+d)

파이썬도 c언어 구현과 딱히 다른 점이 없다.


브론즈4..너무 많다. 딱 몇문제만 추려서 풀어보고 브론즈 3 혹은 브론즈 2 부터 차례차례 풀어보는게 나을 것 같다. 좀 찾아봐야지.. 

댓글