728x90
반응형

거꾸로 돌렸을 때 더 큰 값을 출력하면 된다.

n1, n2 = input().split()
print(max(int(n1[::-1]), int(n2[::-1])))

728x90
반응형
728x90
반응형

쉬운 수학 문제다.

한 변의 길이가 3 -> 5 -> 9 -> 17 -> 33... 와 같이 2**i 개만큼 계속 증가하는 패턴이다.

n = 2
a = 1
for i in range(int(input())):
    n += a
    a *= 2
print(n**2)

728x90
반응형
728x90
반응형

split('-')을 사용해 '-' 기준으로 입력을 나누어주고 첫 글자만 따서 합친 값을 출력하면 된다.

names = input().split('-')
ans = ''
for name in names:
    ans += name[0]
print(ans)

728x90
반응형
728x90
반응형

M이 45보다 작다면 M에다 15를 더해주고 H가 0인지 확인한다.

H가 0이라면 23으로, 아니라면 그냥 1을 빼주면 된다.

H, M = map(int, input().split()) 
if M < 45: 
    M += 15 
    if H == 0: 
        H = 23 
    else: 
        H -= 1 
else: 
    M -= 45 
print(H, M)

728x90
반응형
728x90
반응형

제한시간이 짧은 문제라 반복문을 쓰면 바로 시간 초과가 뜬다.

n = (V-B)//(A-B) 이 식이 핵심이다. 

V에 B를 빼준 이유는 맨 마지막 목적지에 도착할 때는 뒤로 가지 않기 때문이다

-> 마지막에는 A-B가 아닌 A만큼만 가면 되기 때문에 미리 V에 B를 빼주는 것이다.

V-B를 A-B로 나누었을 때 딱 나누어지면 딱 맞게 목적지에 도착한 상황이기에 n을 그대로 출력해주면 된다.

딱 나누어지지 않는다면 한 번 더 올라가야 되는 상황이므로 n에 1을 더한 값을 출력해준다.

A, B, V = map(int, input().split())
n = (V-B)//(A-B)
if (V-B)%(A-B):
    print(n+1)
else:
    print(n)

728x90
반응형
728x90
반응형

모든 5를 6으로 착각했을 때가 최댓값, 모든 6을 5로 착각했을 때가 최솟값이다.

n1, n2 = input().split()
m = int(n1.replace('6', '5')) + int(n2.replace('6', '5'))
M = int(n1.replace('5', '6')) + int(n2.replace('5', '6'))
print(m, M)

728x90
반응형
728x90
반응형

2*2 크기의 행렬을 시계방향으로 90도 4번 돌리면서 A/C + B/D 값을 리스트에 저장한다.

그 후 리스트의 최댓값의 인덱스를 출력해주면 된다. 

li = []
li += map(int, input().split())
li += list(map(int, input().split()))[::-1]

a = []
for i in range(4):
    s = li[0] / li[3] + li[1] / li[2]
    a.append(s)
    li = [li[-1]] + li[:-1]
print(a.index(max(a)))

728x90
반응형
728x90
반응형

완전 수학 문제이다.

R은 외각에 있는 타일의 개수이고 B는 외각을 제외한 타일의 개수인데

외각에 있는 타일의 개수는 2(L+W) - 4, 외각을 제외한 타일의 개수는 (L-2)*(W-2)로 표현할 수 있다.

위의 식들을 정리하면 2(L+W) - 4 = R -> L+W = (R+4)//2,

(L-2)*(W-2) = L*W - 2*(L+W) + 4 = L*W - 2*((R+4)//2) + 4 = L*W - (R+4) + 4 = L*W - R = B -> L*W = R + B

즉 L+W = (R+4)//2, L*W = R + B이다.

위의 식들을 통해 R, B가 주어졌을 때 우리가 찾아야 되는 L, W과 관련된 값(L+W, L*W)를 얻을 수 있다.

위 두 값만 알면 L, W는 쉽게 구할 수 있다.

EX) R = 10, B = 2

L + W = (10+4)/2 = 7, L*W = 10 + 2 = 12

L+W = 7, L*W = 12를 만족하는 L, W는 4, 3이다.

R, B = map(int, input().split())
LpW = (R + 4) // 2
LW = R + B

for i in range(1, LpW):
    if (LpW - i) * i == LW:
        print(max(i, LpW-i), min(i, LpW-i))
        break
728x90
반응형
728x90
반응형

FBI 단어가 들어있는 입력들의 인덱스를 출력해주면 된다.

li = [] 
for i in range(1, 6): 
    w = input() 
    if "FBI" in w: 
        li.append(i) 
if li: 
    print(*li) 
else: 
    print("HE GOT AWAY!")

728x90
반응형
728x90
반응형

5킬로그램짜리를 최대한 많이 배달하는 게 포인트다.

입력 N이 5로 나누어질 때까지 3을 계속 빼고 이 과정을 몇 번 반복했는지 새면 된다.

3을 계속 빼도 끝까지 5로 나누었을 때 0이 안된다면 N킬로그램을 정확하게 만들 수 없는 경우이다.

EX) N = 18

(18-0)%5 != 0 -> i = 1

(18-3)%5 == 0 -> 정답 = 15//5 + i = 3 + 1 = 4

n = int(input())
i = ok = 0
while(i < n/3+1):
    if (n - 3*i) % 5 == 0:
        ok = 1
        break
    i += 1
print((n-3*i)//5+i) if ok else print(-1)
728x90
반응형
728x90
반응형

반복문 3개를 사용해 전 범위를 다 확인해보면 된다.

아무리 오래 돌아도 100^3번보단 적게 돌아서 시간 초과가 뜨지 않는다.

N, M = map(int, input().split())
li = sorted(list(map(int, input().split())))
ans_li = []
for i in range(N-2):
    for j in range(i+1, N-1):
        for k in range(j+1, N):
            s = li[i] + li[j] + li[k]
            if s <= M:
                ans_li.append(s)
ans_li.sort()
print(ans_li[-1])

728x90
반응형
728x90
반응형

str은 바로 바꿔줄 수 없으므로 리스트로 바꾼 다음에 바꿔주자. 

li = list(input())
for i in range(len(li)):
    if li[i] in 'CAMBRIDGE':
        li[i] = ''
print(''.join(li))

728x90
반응형
728x90
반응형

0층의 i호에는 사람이 i명 산다는 말을 통해 0층의 상황은 [1, 2, 3, 4,.... n]이라는 것을 알 수 있다.

그 이후에는 자기 앞에 호에 사는 사람의 수를 k층 n호가 나올 때까지 계속 더하면서 갱신하면 된다.

EX) k = 2, n = 3

0층 -> [1, 2, 3], 1층 -> [1, 3, 6], 2층 -> [1, 4, 10] -> 10 출력

for _ in range(int(input())):
    k = int(input())
    n = int(input())
    ans = 0
    li = []
    for i in range(1, n+1):
        li.append(i)
    for i in range(k):
        for j in range(n-1):
            li[j+1] += li[j]
    print(li[n-1])

728x90
반응형
728x90
반응형

반복문을 처음 공부할 때 자주 볼 수 있는 윤년 문제이다. 

조건에 맞게 조건문을 사용해주자.

n = int(input())

if (n%4 == 0) and ((n%100 != 0) or (n%400 == 0)):
    print ('1')
else:
    print ('0')

728x90
반응형
728x90
반응형

li = []
for i in range(0, int(input())):
    li.append(int(input()))
li.sort()
for n in li:
    print(n)

728x90
반응형

+ Recent posts