728x90

BOJ 11943 파일 옮기기

문제

두 개의 바구니에 사과와 오렌지가 있다. 

첫 번째 바구니에는 사과 A개와 오렌지 B개가 있으며 두 번째 바구니에는 사과 C개와 오렌지 D개가 있다.

당신은 한 바구니에 있는 과일 하나를 집어서 다른 바구니로 옮길 수 있다. 

이런 식으로 과일을 옮길 때, 한 바구니에는 사과만 있게 하고 다른 쪽에는 오렌지만 있게 하려고 한다.

앞서 말한 조건을 만족하도록 과일을 옮길 때, 과일을 옮기는 최소 횟수를 구하는 프로그램을 작성하여라.

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

입력

첫 번째 줄에는 첫 번째 바구니에 있는 사과와 오렌지의 수 A, B가 주어진다. (0 ≤ A, B ≤ 1,000)

두 번째 줄에는 두 번째 바구니에 있는 사과와 오렌지의 수 C, D가 주어진다. (0 ≤ C, D ≤ 1,000)

출력

사과와 오렌지를 옮기는 최소 횟수를 출력한다.

예제 입력 1

1 2
3 4

예제 출력 1

5

풀이

# boj 11943 파일 옮기기
import sys

input = sys.stdin.readline
a, b = map(int, input().split())
c, d = map(int, input().split())

print(min(a+d, b+c))
728x90
728x90

BOJ 14652 나는 행복합니다~

문제

“나는 행복합니다~ 한화라서 행복합니다~”

행복한 이 노래 가사! 그렇다. 욱제는 한화 이글스의 열렬한 이다. 

욱제는 여름방학을 맞아 치킨과 맥주를 챙겨 야구장을 방문했다! 하지만 이게 웬걸? 

치맥에 정신이 팔린 욱제는 그만 자신의 관중석 위치가 담긴 티켓을 잃어버리고 말았다. 

욱제가 유일하게 기억하는 것이라고는 자신의 관중석 번호 K뿐이다.

당신은 한화 이글스의 감독이다. 

열혈인 욱제의 방문에 깊은 감동을 받은 당신은 욱제가 잃어버린 자리를 찾아주려고 한다.

오늘 경기가 펼쳐지는 잠실구장은 세로 길이가 N, 가로 길이가 M인 N≤M 크기의 관중석을 가지고 있다. 

관중석의 왼쪽 위는 (0, 0), 오른쪽 아래는 (N-1, M-1)으로 표시된다. 

각 관중석에는 번호가 아래 그림처럼 매겨져있다. 

(0, 0)에서부터 0번으로 시작하여 오른쪽으로, 끝에 다다르면 그 아래에서 또 오른쪽으로 숫자가 증가해나가는 식이다.

당신은 관중석의 크기와 욱제 자리의 번호를 알고 있다.

욱제가 잃어버린 자리는 어디일까? 자리를 찾아서 욱제에게 알려주도록 하자!

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

입력

첫째 줄에 관중석의 크기를 나타내는 N, M과 잃어버린 관중석 번호를 나타내는 K가 주어진다. (1 ≤ N, M ≤ 30,000, 0 ≤ K ≤ N×M-1)

출력

욱제의 잃어버린 자리를 찾아서, 잃어버린 자리의 좌표 (n, m)를 하나의 공백을 사이에 두고 숫자만 출력한다.

예제 입력 1

3 4 6

예제 출력 1

1 2

예제 입력 2

6 4 14

예제 출력 2

3 2

풀이

# boj 14652 나는 행복합니다~
n, m, s = map(int, input().split())
print(s // m, s % m)
728x90
728x90

BOJ 6359 만취한 상범

문제

서강대학교 곤자가 기숙사의 지하에는 n개의 방이 일렬로 늘어선 감옥이 있다.

각 방에는 벌점을 많이 받은 학생이 구금되어있다.

그러던 어느 날, 감옥 간수인 상범이는 지루한 나머지 정신나간 게임을 하기로 결정했다. 

게임의 첫 번째 라운드에서 상범이는 위스키를 한 잔 들이키고, 달려가며 감옥을 한 개씩 모두 연다. 

그 다음 라운드에서는 2, 4, 6, ... 번 방을 다시 잠그고, 세 번째 라운드에서는 3, 6, 9, ... 번 방이 열려있으면 잠그고, 잠겨있다면 연다. 

k번째 라운드에서는 번호가 k의 배수인 방이 열려 있으면 잠그고, 잠겨 있다면 연다.

이렇게 n번째 라운드까지 진행한 이후, 상범이는 위스키의 마지막 병을 마시고 쓰러져 잠든다.

구금되어있는 몇 명(어쩌면 0명)의 학생들은 자신의 방을 잠그지 않은 채 상범이가 쓰러져버렸단 것을 깨닫고 즉시 도망친다.

방의 개수가 주어졌을 때, 몇 명의 학생들이 도주할 수 있는지 알아보자.

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

입력

입력의 첫 번째 줄에는 테스트 케이스의 개수 T가 주어진다. 

각 테스트 케이스는 한 줄에 한 개씩 방의 개수 n(5 ≤ n ≤ 100)이 주어진다.

출력

한 줄에 한 개씩 각 테스트 케이스의 답, 즉 몇 명이 탈출할 수 있는지를 출력한다.

예제 입력 1

2
5
100

예제 출력 1

2
10

풀이

# boj 6359 만취한 상범
import math

t = int(input())
for i in range(t):
    n = int(input())
    print(math.floor(n ** 0.5))
728x90
728x90

BOJ 5355 화성 수학

문제

겨울 방학에 달에 다녀온 상근이는 여름 방학 때는 화성에 갔다 올 예정이다. 

(3996번) 화성에서는 지구와는 조금 다른 연산자 @, %, #을 사용한다. @는 3을 곱하고, %는 5를 더하며, #는 7을 빼는 연산자이다. 

따라서, 화성에서는 수학 식의 가장 앞에 수가 하나 있고, 그 다음에는 연산자가 있다.

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

입력

첫째 줄에 테스트 케이스의 개수 T가 주어진다. 다음 줄에는 화성 수학식이 한 줄에 하나씩 주어진다.

입력으로 주어지는 수는 정수이거나 소수 첫째 자리까지 주어지며, 0 이상 100 이하이다.

연산자는 최대 3개 주어진다.

출력

각 테스트 케이스에 대해서, 화성 수학식의 결과를 계산한 다음에, 소수점 둘째 자리까지 출력한다.

예제 입력 1

3
3 @ %
10.4 # % @
8 #

예제 출력 1

14.00
25.20
1.00

풀이

# boj 5355 화성 수학
t = int(input())
for _ in range(t):
    a = list(map(str, input().split()))
    res = float(a[0])
    for i in a:
        if i == '@':
            res *= 3
        elif i == '%':
            res += 5
        elif i == '#':
            res -= 7
    print("%.2f" %res)
728x90
728x90

BOJ 9656 돌 게임 2

문제

돌 게임은 두 명이서 즐기는 재밌는 게임이다.

탁자 위에 돌 N개가 있다. 상근이와 창영이는 턴을 번갈아가면서 돌을 가져가며, 돌은 1개 또는 3개 가져갈 수 있다.

마지막 돌을 가져가는 사람이 게임을 지게 된다.

두 사람이 완벽하게 게임을 했을 때, 이기는 사람을 구하는 프로그램을 작성하시오. 

게임은 상근이가 먼저 시작한다.

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

입력

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

출력

상근이가 게임을 이기면 SK를, 창영이가 게임을 이기면 CY을 출력한다.

예제 입력 1

4

예제 출력 1

SK

풀이

# boj 9656 돌 게임 2

n = int(input())
if n % 2 == 0:
    print('SK')
else:
    print('CY')
728x90
728x90

BOJ 10103 주사위 게임

문제

창영이와 상덕이는 게임을 하고 있다.

게임을 시작하는 시점에서, 두 사람의 점수는 모두 100점이다.

게임은 여섯 면 주사위를 사용하며, 라운드로 진행된다. 매 라운드마다, 각 사람은 주사위를 던진다.

낮은 숫자가 나온 사람은 상대편 주사위에 나온 숫자만큼 점수를 잃게 된다. 

두 사람의 주사위가 같은 숫자가 나온 경우에는 아무도 점수를 잃지 않는다.

게임이 끝난 이후에 두 사람의 점수를 구하는 프로그램을 작성하시오.

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

입력

첫째 줄에 라운드의 수 n (1 ≤ n ≤ 15)가 주어진다. 다음 n개 줄에는 두 정수가 주어진다. 

첫 번째 정수는 그 라운드에서 창영이의 주사위에 나타난 숫자, 두 번째 정수는 상덕이의 주사위에 나타난 숫자이다.

두 정수는 항상 1보다 크거나 같고, 6보다 작거나 같다.

출력

첫째 줄에 게임이 끝난 이후에 창영이의 점수, 둘째 줄에는 상덕이의 점수를 출력한다.

예제 입력 1

4
5 6
6 6
4 3
5 2

예제 출력 1

94
91

힌트

첫 라운드는 상덕이의 승리이다. 따라서 창영이는 6점을 잃게 된다. 

두 번째 라운드는 두 사람의 숫자가 같기 때문에, 아무도 점수를 잃지 않고 넘어간다. 

세 번째 라운드의 승자는 창영이이기 때문에, 상덕이는 4점을 잃게 된다. 

마지막 라운드는 창영이가 승리하고, 상덕이는 5점을 잃게 된다. 

따라서, 창영이는 6점, 상덕이는 9점을 잃었다.

풀이

# boj 10103 주사위 게임

n = int(input())
x = 100
y = 100
for i in range(n):
    a, b = map(int, input().split())
    if a > b:
        y -= a
    if a < b:
        x -= b
print(x)
print(y)
728x90
728x90

BOJ 13277 큰 수 곱셈

문제

두 정수 A와 B가 주어졌을 때, 두 수의 곱을 출력하는 프로그램을 작성하시오.

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

입력

첫째 줄에 정수 A와 B가 주어진다. 두 정수는 0보다 크거나 같은 정수이며, 

0을 제외한 정수는 0으로 시작하지 않으며, 수의 앞에 불필요한 0이 있는 경우도 없다.

또한, 수의 길이는 300,000자리를 넘지 않는다.

출력

두 수의 곱을 출력한다.

예제 입력 1

1 2

예제 출력 1

2

예제 입력 2

3 4

예제 출력 2

12

예제 입력 3

893724358493284 238947328947329

예제 출력 3

213553048277135320552236238436

풀이

# boj 13277 큰 수 곱셈

a, b = map(int, input().split())
print(a*b)
728x90
728x90

BOJ 15727 조별과제를 하려는데 조장이 사라졌다

문제

3학년 1학기를 재학 중인 성우는 ‘빨간눈 초파리의 뒷다리 털의 개수와 파인애플 껍질의 이해’라는 과목을 수강 중이다.

기말고사를 맞이하여 교수님은 수강생들에게 조별과제를 내주었고, 그 내용은 다음과 같다.

중간고사 이전에 배운 빨간눈 초파리의 뒷다리 털의 개수를 구하는 방법을 이용하여, 

파인애플 껍질의 두께를 구하는 공식을 과학적인 근거와 함께 A4용지 10장 이상으로 제출하시오. [30%]

하지만 성우의 조 조장인 민건은 과제 내용을 듣자마자 집으로 도망쳐 버렸고, 성우는 민건이를 찾기 위해 떠난다. 

성우는 1분에 1에서 5까지의 거리를 이동할 수 있다. 

성우가 있는 곳으로부터 민건이의 집까지 거리가 주어졌을 때, 최대한 빨리 찾을 경우,

정확히 몇 분만에 민건이를 찾을 수 있는지 출력하는 프로그램을 작성하시오.

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

입력

첫째 줄에 성우의 현재 위치와 민건이의 집까지의 거리 L(1 ≤ L ≤ 1,000,000)가 주어진다.

출력

성우가 최소 t분만에 민건이를 찾을 수 있을 때, t 이상의 가장 작은 정수를 출력한다.

예제 입력 1

12

예제 출력 1

3

풀이

# boj 15727 조별과제를 하려는데 조장이 사라졌다

a = int(input())
a -= 1
print(a//5+1)
728x90

+ Recent posts