728x90

BOJ 10870 피보나치 수 5

문제

피보나치 수는 0과 1로 시작한다. 0번째 피보나치 수는 0이고, 1번째 피보나치 수는 1이다. 

그 다음 2번째 부터는 바로 앞 두 피보나치 수의 합이 된다.

이를 식으로 써보면 Fn = Fn-1 + Fn-2 (n ≥ 2)가 된다.

n=17일때 까지 피보나치 수를 써보면 다음과 같다.

0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597

n이 주어졌을 때, n번째 피보나치 수를 구하는 프로그램을 작성하시오.

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

입력

첫째 줄에 n이 주어진다. n은 20보다 작거나 같은 자연수 또는 0이다.

출력

첫째 줄에 n번째 피보나치 수를 출력한다.

예제 입력1

10

예제 출력1

55

풀이

# boj 10870 피보나치 수 5

n = int(input())

def fibo(n):
    if n == 0:
        return 0
    if n == 1:
        return 1
    return fibo(n-1) + fibo(n-2)
print(fibo(n))
728x90
728x90

BOJ 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 초
메모리 제한 : 128 MB

입력

첫째 줄에 3개의 눈이 빈칸을 사이에 두고 각각 주어진다.

출력

첫째 줄에 게임의 상금을 출력 한다.

예제 입력1

3 3 6

예제 출력1

1300

예제 입력2

2 2 2

예제 출력2

12000

예제 입력3

6 2 5

예제 출력3

600

풀이

# boj 2480 주사위 세개

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

if a==b==c:
    print(10000+a*1000)
elif a==b  or a==c:
    print(1000+a*100)
elif b==c:
    print(1000 + b*100)
else:
    print(max(a,b,c) * 100)
728x90
728x90

BOJ 2525 오븐 시계

문제

KOI 전자에서는 건강에 좋고 맛있는 훈제오리구이 요리를 간편하게 만드는 인공지능 오븐을 개발하려고 한다. 

인공지능 오븐을 사용하는 방법은 적당한 양의 오리 훈제 재료를 인공지능 오븐에 넣으면 된다. 

그러면 인공지능 오븐은 오븐구이가 끝나는 시간을 분 단위로 자동적으로 계산한다. 

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

훈제오리구이를 시작하는 시각과 오븐구이를 하는 데 필요한 시간이 분단위로 주어졌을 때, 

오븐구이가 끝나는 시각을 계산하는 프로그램을 작성하시오.

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

입력

첫째 줄에는 현재 시각이 나온다. 

현재 시각은 시 A (0 ≤ A ≤ 23) 와 분 B (0 ≤ B ≤ 59)가 정수로 빈칸을 사이에 두고 순서대로 주어진다.

두 번째 줄에는 요리하는 데 필요한 시간 C (0 ≤ C ≤ 1,000)가 분 단위로 주어진다.

출력

첫째 줄에 종료되는 시각의 시와 분을 공백을 사이에 두고 출력한다. 

(단, 시는 0부터 23까지의 정수, 분은 0부터 59까지의 정수이다. 디지털 시계는 23시 59분에서 1분이 지나면 0시 0분이 된다.)

예제 입력1

14 30
20

예제 출력1

14 50

예제 입력2

17 40
80

예제 출력2

19 0

예제 입력3

23 48
25

예제 출력3

0 13

풀이

# boj 2525 오븐 시계

h, m = map(int, input().split())
timer = int(input()) 

h += timer // 60
m += timer % 60

if m >= 60:
    h += 1
    m -= 60
if h >= 24:
    h -= 24

print(h,m)
728x90
728x90

BOJ 2292 벌집

문제

출처 - 백준 온라인 저지

위의 그림과 같이 육각형으로 이루어진 벌집이 있다.

그림에서 보는 바와 같이 중앙의 방 1부터 시작해서 이웃하는 방에 돌아가면서 1씩 증가하는 번호를 주소로 매길 수 있다.

숫자 N이 주어졌을 때, 벌집의 중앙 1에서 N번 방까지 최소 개수의 방을 지나서 갈 때 몇 개의 방을 지나가는지

(시작과 끝을 포함하여)를 계산하는 프로그램을 작성하시오. 

예를 들면, 13까지는 3개, 58까지는 5개를 지난다.

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

입력

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

출력

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

예제 입력1

13

예제 출력1

3

풀이

# boj 2292 벌집

n = int(input())
num = 1
cnt = 1

while n > num:
    num += 6*cnt
    cnt += 1

print(cnt)
728x90
728x90

BOJ 1712 손익분기점

문제

월드전자는 노트북을 제조하고 판매하는 회사이다. 

노트북 판매 대수에 상관없이 매년 임대료, 재산세, 보험료, 급여 등 A만원의 고정 비용이 들며, 

한 대의 노트북을 생산하는 데에는 재료비와 인건비 등 총 B만원의 가변 비용이 든다고 한다.

예를 들어 A=1,000, B=70이라고 하자. 

이 경우 노트북을 한 대 생산하는 데는 총 1,070만원이 들며, 열 대 생산하는 데는 총 1,700만원이 든다.

노트북 가격이 C만원으로 책정되었다고 한다. 

일반적으로 생산 대수를 늘려 가다 보면 어느 순간 총 수입(판매비용)이 총 비용(=고정비용+가변비용)보다 많아지게 된다. 

최초로 총 수입이 총 비용보다 많아져 이익이 발생하는 지점을 손익분기점(BREAK-EVEN POINT)이라고 한다.

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

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

입력

첫째 줄에 A, B, C가 빈 칸을 사이에 두고 순서대로 주어진다.

A, B, C는 21억 이하의 자연수이다.

출력

첫 번째 줄에 손익분기점 즉 최초로 이익이 발생하는 판매량을 출력한다.

손익분기점이 존재하지 않으면 -1을 출력한다.

예제 입력1

1000 70 170

예제 출력1

11

예제 입력2

3 2 1

예제 출력2

-1

예제 입력3

2100000000 9 10

예제 출력3

2100000001

노트

이 문제에서 설명하는 손익분기점은 회계학에서 정의하는 손익분기점과 다를 수 있다.

풀이

# boj 1712 손익분기점

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

if b >= c:
    print(-1)
else:
    print(int(a//(c-b)+1))
728x90
728x90

BOJ 2558 A+B - 2

문제

두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오.

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

입력

첫째 줄에 A, 둘째 줄에 B가 주어진다. (0 < A, B < 10)

출력

첫째 줄에 A+B를 출력한다.

예제 입력1

1
2

예제 출력1

3

풀이

# boj 2558 A+B - 2

a = int(input())
b = int(input())
res = a+b
print(res)
728x90
728x90

BOJ 1978 소수 찾기

문제

주어진 수 N개 중에서 소수가 몇 개인지 찾아서 출력하는 프로그램을 작성하시오.

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

입력

첫 줄에 수의 개수 N이 주어진다. N은 100이하이다. 

다음으로 N개의 수가 주어지는데 수는 1,000 이하의 자연수이다.

출력

주어진 수들 중 소수의 개수를 출력한다.

예제 입력1

4
1 3 5 7

예제 출력1

3

풀이

# boj 1978 소수 찾기

n = int(input())
arr = list(map(int, input().split()))
cnt = 0
for i in arr:
    chk = 1
    for j in range(2, i):
        if i % j == 0:
            chk = 0
            break
    if chk and i != 1:
        cnt += 1

print(cnt)
728x90
728x90

BOJ 18108 1998년생인 내가 태국에서는 2541년생?!

문제

ICPC Bangkok Regional에 참가하기 위해 수완나품 국제공항에 막 도착한 팀 레드시프트 일행은 눈을 믿을 수 없었다.

공항의 대형 스크린에 올해가 2562년이라고 적혀 있던 것이었다.

불교 국가인 태국은 불멸기원(佛滅紀元), 즉 석가모니가 열반한 해를 기준으로 연도를 세는 불기를 사용한다. 

반면, 우리나라는 서기 연도를 사용하고 있다. 

불기 연도가 주어질 때 이를 서기 연도로 바꿔 주는 프로그램을 작성하시오.

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

입력

서기 연도를 알아보고 싶은 불기 연도 y가 주어진다. (1000 ≤ y ≤ 3000)

출력

불기 연도를 서기 연도로 변환한 결과를 출력한다.

예제 입력1

2541

예제 출력1

1998

풀이

# boj 18108 1998년생인 내가 태국에서는 2541년생?!

y = int(input())
res = y-543
print(res)
728x90

+ Recent posts