728x90

BOJ 10984 내 학점을 구해줘

문제

게으른 근우는 열심히 놀다가 문득, 자신의 학점 평균이 얼마일지 궁금해졌다. 

학사시스템도 들어가기 귀찮아하는 근우를 위해 구해주도록 하자. 

시간 제한 : 1 초
메모리 제한 : 256 MB

입력

첫 번째 줄에 학기의 수 T가 주어진다. 

두 번째 줄부터 T개 학기에 대한 정보가 주어진다.

각 학기에 대한 정보는 다음과 같이 구성되어 있다. 

첫 번째 줄에 들었던 과목의 수 N이 주어지고, 다음 N개 줄에 걸쳐서 N개 과목들의 학점 C와 성적 G가 주어진다. (1 ≤ N ≤ 10, 1 ≤ C ≤ 6, C는 정수) 

G는 {0, 0.7, 1, 1.3, 1.7, 2, 2.3, 2.7, 3, 3.3, 3.7, 4, 4.3} 중 하나이며 소수 부분은 최대 한 자리까지 주어진다.

출력

각 학기에 대해 근우의 총 학점과 평점(GPA)을 출력한다. 정답과의 절대 오차는 10^-1까지 허용한다.

예제 입력 1

2
4
3 4.3
2 2.0
4 0.0
2 4.0
3
4 0.0
4 0.0
3 0.0

예제 출력 1

11 2.3
11 0.0

예제 입력 2

2
4
3 4.3
2 2
4 0.0
2 4.0
3
4 0.0
4 0
3 0

예제 출력 2

11 2.3
11 0.0

풀이

# boj 10984 내 학점을 구해줘
t = int(input())
for i in range(t):
    a = int(input())
    h = 0
    p = 0
    for i in range(a):
        c, g = map(str, input().split())
        h += int(c)
        p += float(c) * float(g)
    p = round(p / h, 1)
    print(h, p)
728x90
728x90

BOJ 15439 베라의 패션

문제

베라는 상의 N 벌과 하의 N 벌이 있다. i 번째 상의와 i 번째 하의는 모두 색상 i를 가진다.

N 개의 색상은 모두 서로 다르다.

상의와 하의가 서로 다른 색상인 조합은 총 몇 가지일까?

시간 제한 : 2 초
메모리 제한 : 256 MB

입력

입력은 아래와 같이 주어진다.

N

출력

상의와 하의가 서로 다른 색상인 조합의 가짓수를 출력한다.

제한

1 ≤ N ≤ 2017

N은 정수이다.

예제 입력 1

1

예제 출력 1

0

예제 입력 2

2

예제 출력 2

2

예제 입력 3

5

예제 출력 3

20

풀이

# boj 15439 베라의 패션
n = int(input())
print(n*(n-1))
728x90
728x90

BOJ 15969 행복

문제

코이 초등학교에 새로 부임하신 교장 선생님은 어린 학생들의 행복감과 학생들의 성적 차이 관계를 알아보기로 했다. 

그래서 이전 성적을 조사하여 학생 들의 시험 점수 차이 변화를 알아보려고 한다.

예를 들어서 2016년 학생 8명의 점수가 다음과 같다고 하자.

27, 35, 92, 75, 42, 53, 29, 87

그러면 가장 높은 점수는 92점이고 가장 낮은 점수는 27점이므로 점수의 최대 차이는 65이다. 

한편 2017년 학생 8명의 점수가 다음과 같았다.

85, 42, 79, 95, 37, 11, 72, 32

이때 가장 높은 점수는 95점이고 가장 낮은 점수는 11점이므로 점수의 최대 차이는 84이다.

N명 학생들의 점수가 주어졌을 때, 가장 높은 점수와 가장 낮은 점수의 차이를 구하는 프로그램을 작성하시오

시간 제한 : 2 초
메모리 제한 : 512 MB

입력

표준 입력으로 다음 정보가 주어진다. 첫 번째 줄에는 학생 수 N이 주어진다.

다음 줄에는 N명의 학생 점수가 공백 하나를 사이에 두고 주어진다.

출력

표준 출력으로 가장 높은 점수와 가장 낮은 점수의 차이를 출력한다.

제한

모든 서브태스크에서 2 ≤ N ≤ 1,000이고 입력되는 학생들의 점수는 0 이상 1,000 이하의 정수이다.

서브태스크 1 (23점)

학생 수가 2명인 경우만 존재한다.

서브태스크 2 (29점)

점수가 낮은 점수부터 높은 점수까지 순서대로 주어진다.

서브태스크 3 (48점)

원래의 제약 조건 이외에 아무 제약 조건이 없다.

예제 입력 1

5
27 35 92 75 42

예제 출력 1

65

예제 입력 2

8
85 42 79 95 37 11 72 32

예제 출력 2

84

풀이

# boj 15969 행복
n = input()
arr = list(map(int, input().split()))
print(max(arr) - min(arr))
728x90
728x90

BOJ 2965 캥거루 세마리

문제

캥거루 세 마리가 사막에서 놀고 있다. 

사막에는 수직선이 하나 있고, 캥거루는 서로 다른 한 좌표 위에 있다.

한 번 움직일 때, 바깥쪽의 두 캥거루 중 한 마리가 다른 두 캥거루 사이의 정수 좌표로 점프한다. 

한 좌표 위에 있는 캥거루가 두 마리 이상일 수는 없다.

캥거루는 최대 몇 번 움직일 수 있을까?

시간 제한 : 1 초
메모리 제한 : 128 MB

입력

첫째 줄에 세 캥거루의 초기 위치 A, B, C가 주어진다. (0 < A < B < C < 100)

출력

캥거루가 최대 몇 번 움직일 수 있는지 출력한다.

예제 입력 1

2 3 5

예제 출력 1

1

예제 입력 2

3 5 9

예제 출력 2

3

풀이

# boj 2965 캥거루 세마리
a, b, c = map(int, input().split())
d = max(b - a, c - b)
print(d - 1)
728x90
728x90

BOJ 9325 얼마?

문제

해빈이는 학교를 다니면서 틈틈히 번 돈으로 자동차를 사려고 한다. 

자동차에 여러 가지 옵션을 포함시킬 수 있는데 해빈이는 덧셈과 곱셈을 하지 못하기 때문에 친구 태완이에게 도움을 청했다.

하지만 태완이도 덧셈과 곱셈을 못한다.

불쌍한 이 두 친구를 위해 모든 옵션이 주어진 자동차를 구매하는데 필요한 액수를 계산해 주자.

시간 제한 : 1 초
메모리 제한 : 128 MB

입력

첫째 줄에 테스트 케이스의 개수가 주어진다.

각 테스트 케이스의 첫 줄엔 자동차의 가격 s가 주어진다. (1 ≤ s ≤ 100 000)

둘째 줄엔 해빈이가 구매하려고 하는 서로 다른 옵션의 개수 n이 주어진다. (0 ≤ n ≤ 1 000)

뒤이어 n개의 줄이 입력으로 들어온다. 

각 줄은 q 와 p로 이루어져 있는데 q는 해빈이가 사려고 하는 특정 옵션의 개수이고 p는 해당 옵션의 가격이다. (1 ≤ q ≤ 100, 1 ≤ p ≤ 10 000)

출력

각 테스트 케이스 마다, 해빈이가 최종적으로 구매하려는 자동차의 가격을 한줄씩 출력한다.

예제 입력 1

2
10000
2
1 2000
3 400
50000
0

예제 출력 1

13200
50000

풀이

# boj 9325 얼마?
import sys
input = sys.stdin.readline
t = int(input())

for _ in range(t):
    s = int(input())
    n = int(input())
    res = s
    
    for _ in range(n):
        q, p = map(int, input().split())
        res += q * p
        
    print(res)
728x90
728x90

BOJ 13241 최소공배수

문제

정수 B에 0보다 큰 정수인 N을 곱해 정수 A를 만들 수 있다면, A는 B의 배수이다.

예:
10은 5의 배수이다 (5*2 = 10)
10은 10의 배수이다(10*1 = 10)
6은 1의 배수이다(1*6 = 6)
20은 1, 2, 4,5,10,20의 배수이다.

다른 예:
2와 5의 최소공배수는 10이고, 그 이유는 2와 5보다 작은 공배수가 없기 때문이다.
10과 20의 최소공배수는 20이다.
5와 3의 최소공배수는 15이다.

당신은 두 수에 대하여 최소공배수를 구하는 프로그램을 작성 하는 것이 목표이다.

시간 제한 : 2 초
메모리 제한 : 512 MB

입력

한 줄에 두 정수 A와 B가 공백으로 분리되어 주어진다.

50%의 입력 중 A와 B는 1000(103)보다 작다. 다른 50%의 입력은 1000보다 크고 100000000(108)보다 작다.

추가: 큰 수 입력에 대하여 변수를 64비트 정수로 선언하시오.

C/C++에서는 long long int를 사용하고, Java에서는 long을 사용하시오.

출력

A와 B의 최소공배수를 한 줄에 출력한다.

예제 입력 1

1 1

예제 출력 1

1

예제 입력 2

3 5

예제 출력 2

15

예제 입력 3

1 123

예제 출력 3

123

예제 입력 4

121 199

예제 출력 4

24079

풀이

# boj 13241 최소공배수

a, b = map(int, input().split())

def gcd(a, b):
    while b:
        mod = b
        b = a % b
        a = mod
    return a

print(a*b // gcd(a, b))
728x90
728x90

BOJ 20492 세금

문제

선린인터넷고등학교의 한 학생은 프로그래밍 대회에 참가하여 거액의 상금을 수상하는 영광을 누리게 되었다.

하지만, 이 학생이 상금 금액의 전부를 수령하게 되는 것은 아니다.

상금의 일부를 제세공과금으로 납부하고, 나머지 금액을 수령하게 된다.

일반적으로, 대회에서 상금을 받으면 전체 금액의 22%를 제세공과금으로 국가에 납부하고, 나머지 금액을 수령하게 된다.

하지만, 상금의 80%를 필요 경비로 인정하게 되면, 나머지 20% 중 22%만을 제세공과금으로 납부해도 된다.

대회 상금의 금액이 주어질 때, 다음 두 경우 각각에 대해 이 학생이 실제로 수령하는 금액을 구해보자.

1. 전체 상금의 22%를 제세공과금으로 납부하는 경우
2. 상금의 80%를 필요 경비로 인정받고, 나머지 금액 중 22%만을 제세공과금으로 납부하는 경우

시간 제한 : 1 초
메모리 제한 : 1024 MB

입력

상금의 금액을 나타내는 하나의 정수 N이 주어진다.

출력

1번 경우에 대한 답과 2번 경우에 대한 답을 사이에 공백을 두고 출력한다.

제한

1,000 <= N <= 10,000,000
 
N은 1,000의 배수

예제 입력 1

10000000

예제 출력 1

7800000 9560000

예제 입력 2

1000

예제 출력 2

780 956

풀이

# boj 20492 세금

n = int(input())
print(int(n*0.78), int(n*0.8 + (n*0.2*0.78)))
728x90
728x90

BOJ 10707 수도요금

문제

JOI군이 살고 있는 지역에는 X사와 Y사, 두 개의 수도회사가 있다. 두 회사의 수도요금은 한 달간 수도의 사용량에 따라 다음과 같이 정해진다.

X사 : 1리터당 A엔.
Y사 : 기본요금은 B엔이고, 사용량이 C리터 이하라면 요금은 기본요금만 청구된다. 
사용량이 C리터가 넘었을 경우 기본요금 B엔에 더해서 추가요금이 붙는다. 
추가요금은 사용량이 C리터를 넘었을 경우 1리터를 넘었을 때마다 D엔이다.

JOI군의 집에서 한 달간 쓰는 수도의 양은 P리터이다.

수도요금이 최대한 싸게 되도록 수도회사를 고를 때, JOI군의 집의 1달간 수도요금을 구하여라.

시간 제한 : 1 초
메모리 제한 : 256 MB

입력

입력은 5줄이고 한 줄에 하나씩 정수가 입력된다.

첫 번째 줄에는 X사의 1리터당 요금 A가 입력된다.
두 번째 줄에는 Y사의 기본요금 B가 입력된다.
세 번째 줄에는 Y사의 요금이 기본요금이 되는 사용량의 상한 C가 입력된다.
네 번째 줄에는 Y사의 1리터 당 추가요금 D가 입력된다.
다섯 번째 줄에는 JOI군의 집에서 사용하는 한 달간 수도의 양 P가 입력된다.

입력되는 정수 A,B,C,D,P는 전부 1 이상 10000 이하이다.

출력

JOI군의 집에서 지불하는 한 달간 수도요금을 첫째 줄에 출력한다.

예제 입력 1

9
100
20
3
10

예제 출력 1

90

예제 입력 2

8
300
100
10
250

예제 출력 2

1800

힌트

입출력예제 1에서, JOI군의 집에서 사용하는 수도의 양은 10리터이다.

X사의 수도요금은 9 × 10 = 90엔이다.
JOI군의 집에서 사용한 양이 20리터 이하이므로 Y사의 수도요금은 기본요금인 100엔이다.
JOI군의 집은 수도요금이 더 싼 X사를 고르고, 이때의 한 달치 수도요금은 90엔이다.

입출력예제 2에서, JOI군의 집에서 사용하는 수도의 양은 250리터이다.

X사의 수도요금은 8 × 250 = 2000엔이다.
JOI군의 집에서 사용한 양이 100리터 이상이므로 초과량은 250 - 100 = 150리터이다. 
따라서 Y사의 수도요금은 기본요금인 300엔에 더해서 10 × 150 = 1500엔의 추가요금이 붙고, 총 요금은 300 + 1500 = 1800엔이 된다.

JOI군의 집은 수도요금이 더 싼 Y사를 고르고, 이때의 한 달치 수도요금은 1800엔이다.

풀이

# boj 10707 수도요금
a = int(input())
b = int(input())
c = int(input())
d = int(input())
p = int(input())

if p > c:
    res = b + (p-c)*d
else:
    res = b

print(min(a*p, res))
728x90

+ Recent posts