728x90
반응형

단순 사칙연산 문제이다.

N, M = map(int, input().split())
h = max(map(int, input().split()))
a = max(map(int, input().split()))
print(h+a)
728x90
반응형
728x90
반응형

단순 사칙연산 문제이다.

N, K = map(int, input().split())
li = list(map(int, input().split()))
cnt = sum([(n+1)//2 for n in li])
print("YES" if cnt >= N else "NO")
728x90
반응형
728x90
반응형

단순 사칙연산 문제이다.

L, R, A = map(int, input().split())
a, b = min(L, R), max(L, R)
t = min(A, b-a)
a += t
A -= t
res = a*2 + (A//2*2 if A else 0)
print(res)
728x90
반응형
728x90
반응형

단순 사칙연산 문제이다.

K = int(input())
for i in range(1, K+1):
    if 1 + i + i**2 == K:
        print(i)
        break
728x90
반응형
728x90
반응형

단순 수학 문제이다.

import sys
for _ in range(int(input())):
    print(int(sys.stdin.readline())**2)
728x90
반응형
728x90
반응형

단순 문자열 문제이다.

for case in range(int(input())):
    b = int(input())
    s = input().replace('O', '0')
    s = s.replace('I', '1')
    res = "".join([chr(int(s[8*i:8*(i+1)], 2)) for i in range(b)])
    print(f"Case #{case+1}: {res}")
728x90
반응형
728x90
반응형

단순 문자열 문제이다.

N, M = map(int, input().split())
res = str(N)*N
print(res if len(res) <= M else res[:M])
728x90
반응형
728x90
반응형
s = input()
if '0x' in s:
    print(int(s, 16))
elif s[0] == '0':
    print(int(s, 8))
else:
    print(int(s))

사칙연산 & 문자열 문제이다.

 

728x90
반응형
728x90
반응형

단순 문자열 문제이다.

for _ in range(int(input())):
    a, b = map(int, input().split())
    s = input()
    res = ''.join([chr(ord('A') + ((ord(c)-ord('A'))*a + b)%26) for c in s])
    print(res)
728x90
반응형
728x90
반응형

단순 문자열 문제이다.

L = int(input())
s = input()
res = 0
for i in range(L):
    res += (ord(s[i])-ord('a')+1)* 31**i
print(res % 1234567891)
728x90
반응형
728x90
반응형

이분 탐색 문제이다.

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

이분 탐색 문제이다.

def count(li, m):
    t = cnt = 0
    for n in li:
        if t+n > m:
            t = n
            cnt += 1
        else:
            t += n
    return cnt+1

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

이분 탐색 문제이다.

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

이분 탐색 문제이다. 

def bs(li, n):
    s, e = 0, len(li)-1
    while s <= e:
        m = (s+e)//2
        if li[m] == n:
            return 1
        elif li[m] < n:
            s = m+1
        else:
            e = m-1
    return 0
        
for _ in range(int(input())):
    N = int(input())
    li1 = sorted(list(map(int, input().split())))
    M = int(input())
    li2 = list(map(int, input().split()))
    for n in li2:
        print(bs(li1, n))

그냥도 풀어봤다. 아이러니하게도 아래 코드가 속도가 더 빠르다.

for _ in range(int(input())):
    N = int(input())
    li1 = set(map(int, input().split()))
    M = int(input())
    li2 = list(map(int, input().split()))
    for n in li2:
        print(1 if n in li1 else 0)
728x90
반응형
728x90
반응형

이분 탐색 문제이다. 이제 이분 탐색에 조금 익숙해진 것 같다!

N = int(input())
li = sorted(map(int, input().split()))
res = 0
for i in range(N-1):
    s, e = i+1, N-1
    t = -1
    while s <= e:
        m = (s+e)//2
        if li[i] >= 0.9*li[m]:
            t = m
            s = m+1
        else:
            e = m-1
    res += t-i if t > -1 else 0
print(res)
728x90
반응형

+ Recent posts