728x90
반응형

이분 탐색 문제이다. 

M, N = map(int, input().split())
li = list(map(int, input().split()))
s, e = 1, max(li)
res = 0
while s <= e:
    m = (s+e)//2
    if sum([n//m for n in li]) >= M:
        res = m
        s = m+1
    else:
        e = m-1
print(res)
728x90
반응형
728x90
반응형

이분 탐색 문제이다.

sys.stdin.readline 함수를 사용해서 입력을 받지 않으면 이분 탐색 알고리즘을 사용해도 시간초과가 나온다. 

import sys

def bs(li, n):
    s, e = 0, len(li)-1
    res = 0
    while s <= e:
        m = (s+e)//2
        if int(li[m][1]) >= n:
            e = m-1
            res = m
        else:
            s = m+1
    return res

N, M = map(int, sys.stdin.readline().split())
li = [sys.stdin.readline().split() for _ in range(N)]
for _ in range(M):
    n = int(sys.stdin.readline())
    print(li[bs(li, n)][0])
728x90
반응형
728x90
반응형

이분 탐색 문제이다. 소수를 찾는 문제라서 반복문을 100번 정도 돌려줬다.

50번 정도 돌리면 결과의 오차가 10**-9보다 크게 나오는지 통과가 안된다.

N, L, W, H = map(int, input().split())
s, e = 0, max(L, W, H)
for _ in range(100):
    m = (s+e)/2
    if (L//m)*(W//m)*(H//m) >= N:
        s = m
    else:
        e = m
print("%.10f" %(e))

처음에 아래같이 풀었다가 시간 초과가 떠서 계속 틀렸다.

N, L, W, H = map(int, input().split())
s, e = 0, max(L, W, H)
while e-s > 0.00000001:
    m = (s+e)/2
    if (L//m)*(W//m)*(H//m) >= N:
        s = m
    else:
        e = m
print("%.10f" %(e))
728x90
반응형
728x90
반응형

단순 수학 문제이다.

n = int(input())
cnt = 0
for i in range(3, max(n-6, 0)+1, 3):
    for j in range(i+3, max(n-3, 0)+1, 3):
        cnt += 1
print(cnt)
728x90
반응형
728x90
반응형

단순 사칙연산 문제이다.

C, K, P = map(int, input().split())
li = [K*i + P*(i**2) for i in range(1, C+1)]
print(sum(li))
728x90
반응형
728x90
반응형

단순 기하학 문제이다. 모든 경우에 다 맞는 코드인 것 같은데 만점이 안나온다. 반례가 무엇일까...

c, b = map(int, input().split())
print(max(c,b)/min(c,b))
728x90
반응형
728x90
반응형

단순 수학 문제이다.

print(round((int(input())/2)**2))
728x90
반응형
728x90
반응형

단순 수학 문제이다.

k = float(input())
d1, d2 = map(float, input().split())
d1, d2 = min(d1, d2), max(d1, d2)
h = k**2 - ((d2-d1)/2)**2
print(h)
728x90
반응형
728x90
반응형

단순 수학 문제이다.

a, m = map(int, input().split())
for i in range(1, 10001):
    if a*i % m == 1:
        print(i)
        break
728x90
반응형
728x90
반응형

단순 사칙연산 문제이다.

x, y = [], []
for _ in range(int(input())):
    a, b = map(int, input().split())
    x.append(a); y.append(b)
print((max(x)-min(x) + max(y)-min(y))*2)
728x90
반응형
728x90
반응형

단순 수학 문제이다.

import sys
for _ in range(int(input())):
    a = int(sys.stdin.readline())
    t = int(bin(a)[2:])
    if t&(-t) == a:
        print(1)
    else:
        print(0)
728x90
반응형
728x90
반응형

단순 구현 문제이다. 

s1, s2 = map(int, input().split())
li1 = [list(map(int, input().split())) for _ in range(s1)]
li2 = [list(map(int, input().split())) for _ in range(s2)]
for i in range(s1):
    if li1[i][0] != li1[i][1]:
        print("Wrong Answer")
        exit()
for i in range(s2):
    if li2[i][0] != li2[i][1]:
        print("Why Wrong!!!")
        exit()
print("Accepted")

 

728x90
반응형
728x90
반응형

단순 사칙연산 문제이다.

N, M = map(int, input().split())
li = list(map(int, input().split()))
res = 1
for n in li:
    res *= n
print(res%M)
728x90
반응형
728x90
반응형

단순 사칙연산 문제이다.

이 문제에서 그냥 /을 사용해서 나눠주면 실제 결괏값과 10**(-20) 정도의 차이는 웬만하면 나게 돼서

만점을 못 받으므로 직접 나누기 기능을 구현해줘야 한다.

a, b = map(int, input().split())
print(a//b, end='')
if a%b:
    i = 0
    print('.', end='')
    while a%b and i < 1000: 
        a = a%b * 10
        i += 1
        print(a//b, end='')

 

728x90
반응형
728x90
반응형

단순 구현 문제이다.

N, a, b = map(int, input().split())
li = [list(map(int, input().split())) for _ in range(N)]
res = "HAPPY"
t = li[a-1][b-1]
if t < max([li[i][b-1]for i in range(N)]) or t < max([li[a-1][j]for j in range(N)]):
    res = "ANGRY"
print(res)
728x90
반응형

+ Recent posts