import sys

# 정수 X를 스택에 넣는 연산이다.
def push(x):
    stack.append(x)

# 스택에서 가장 위에 있는 정수를 빼고, 그 수를 출력한다. 
# 만약 스택에 들어있는 정수가 없는 경우에는 -1을 출력한다.
def pop():
    if(not stack):
        return -1
    else:
        return stack.pop()

# 스택에 들어있는 정수의 개수를 출력한다.
def size():
    return len(stack)

# 스택이 비어있으면 1, 아니면 0을 출력한다.
def empty():
    return 0 if stack else 1

# 스택의 가장 위에 있는 정수를 출력한다. 
# 만약 스택에 들어있는 정수가 없는 경우에는 -1을 출력한다.
def top():
    return stack[-1] if stack else -1

N = int(sys.stdin.readline().rstrip())
stack = []

for _ in range(N):
    input_split = sys.stdin.readline().rstrip().split()

    order = input_split[0]

    if order == "push":
        push(input_split[1])
    elif order == "pop":
        print(pop())
    elif order == "size":
        print(size())
    elif order == "empty":
        print(empty())
    elif order == "top":
        print(top())

- stack 개념보단 시간 초과 해결이 더 어려운 문제..(?)

'# 코딩 문제 관련 > 파이썬' 카테고리의 다른 글

백준 9012번(python)  (0) 2019.06.02
백준 1874번(python)  (0) 2019.06.02
백준 9020번(python)  (0) 2019.05.31
백준 4948번(python)  (0) 2019.05.31
백준 2581번(python)  (0) 2019.05.31


def is_prime(num):
    if(num <= 1):
        return False
    
    i = 2
    while i * i <=num:
        if(num % i == 0):
            return False
        i += 1
    return True

Case = int(input())
num_list = [int(input()) for x in range(Case)]
prime_list = []
for i in range(2, 10001):
    if(is_prime(i)):
        prime_list.append(i)

for num in num_list:
    half = num // 2
    d_half = half
    u_half = half
    while(d_half > 0):
        if(d_half in prime_list and u_half in prime_list):
            if(num == d_half + u_half):
                print(d_half, u_half)
                break
        d_half -= 1
        u_half += 1

밑의 코드는 시간초과.. 절반으로 제한하는 것보다 절반부터 시작하는게 당연히 빠를 것 같긴 하다

def is_prime(num):
    if(num <= 1):
        return False
    
    i = 2
    while i * i <=num:
        if(num % i == 0):
            return False
        i += 1
    return True

Case = int(input())
num_list = [int(input()) for x in range(Case)]
prime_list = []
for i in range(2, 10000):
    if(is_prime(i)):
        prime_list.append(i)

for num in num_list:
    diff = None
    prime_a, prime_b = 0, 0
    for i in prime_list:
        if(i > num // 2):
            break
        for j in prime_list:
            if(i + j == num or j > num):
                i_minus_j = abs(i - j)
                if(diff == None):
                    diff = i_minus_j
                    prime_a, prime_b = i, j
                elif(diff > i_minus_j):
                    diff = i_minus_j
                    prime_a, prime_b = i, j
                break
    print(prime_a, prime_b)

'# 코딩 문제 관련 > 파이썬' 카테고리의 다른 글

백준 1874번(python)  (0) 2019.06.02
백준 10828번(python)  (0) 2019.06.02
백준 4948번(python)  (0) 2019.05.31
백준 2581번(python)  (0) 2019.05.31
백준 1929번(python)  (0) 2019.05.31


def is_prime(num):
    if(num <= 1):
        return False
    i = 2
    while i * i <= num:
        if(num % i == 0):
            return False
        i += 1
    return True

num_list = [x for x in range(1, 123456 * 2 + 1)]
for i in num_list:
    if(is_prime(i)):
        num_list[i - 1] = 1

while(True):
    num = int(input())
    if(num == 1):
        print(num)
        continue
    if(num == 0):
        break
    cnt = 0    
    for i in range(num + 1, 2 * num + 1):
        if(num_list[i - 1] == 1):
            cnt += 1
    print(cnt)

'# 코딩 문제 관련 > 파이썬' 카테고리의 다른 글

백준 10828번(python)  (0) 2019.06.02
백준 9020번(python)  (0) 2019.05.31
백준 2581번(python)  (0) 2019.05.31
백준 1929번(python)  (0) 2019.05.31
백준 1978번(python)  (0) 2019.05.31


M = int(input())
N = int(input())
def is_prime(num):
    if(num <= 1):
        return False
    
    i = 2
    while i * i <= num:
        if num % i == 0:
            return False
        
        i += 1
    return True

sum = 0
minv = 0

for i in range(M, N + 1):
    if(is_prime(i)):
        sum += i
        if(minv == 0 or minv > i):
            minv = i
        
if(sum == 0):
    print(-1)
else:
    print(sum)
    print(minv)

'# 코딩 문제 관련 > 파이썬' 카테고리의 다른 글

백준 9020번(python)  (0) 2019.05.31
백준 4948번(python)  (0) 2019.05.31
백준 1929번(python)  (0) 2019.05.31
백준 1978번(python)  (0) 2019.05.31
백준 1181번(python)  (0) 2019.05.30


M, N = list(map(int, input().split(' ')))
def is_prime(num):
    if(num <= 1):
        return False
    
    i = 2
    while i * i <= num:
        if num % i == 0:
            return False
        
        i += 1
    return True

for i in range(M, N + 1):
    if(is_prime(i)):
        print(i)

 

'# 코딩 문제 관련 > 파이썬' 카테고리의 다른 글

백준 4948번(python)  (0) 2019.05.31
백준 2581번(python)  (0) 2019.05.31
백준 1978번(python)  (0) 2019.05.31
백준 1181번(python)  (0) 2019.05.30
백준 2108번(python)  (0) 2019.05.30