728x90
반응형

층(Y)은 N이 H보다 작아질 때까지 H를 뺀 횟수 + 1이고, 호(X)는 반복문을 탈출하고 남은 N이다.

처음엔 층(Y)은 N에다 H를 나눈 나머지이고 호(X)는 N에다 H를 나눈 몫이라고 생각했었는데 조금 다른 느낌이다.

EX) H = 6, W = 12, N = 10

1) 10 > 6 O ->  N = 10 - 6 = 4, X = 2

2) 4 > 6 X -> Y = 4, X = 2 -> 402 출력

for _ in range(int(input())):
    H, W, N = map(int,input().split(" "))
    X = 1
    while N > H:
        X += 1
        N -= H
    Y = N
    if X < 10:
        print(str(Y) + "0" + str(X))
    else:
        print(str(Y) + str(X))

728x90
반응형
728x90
반응형

노가다......

print("|\\_/|")
print("|q p|   /}")
print("( 0 )\"\"\"\\")
print("|\"^\"`    |")
print("||_/=\\\\__|")

728x90
반응형
728x90
반응형

노가다...

print("\    /\\")
print(" )  ( ')")
print("(  /  )")
print(" \(__)|")

728x90
반응형
728x90
반응형

단순 수학 문제이다. n과 n+1 사이에는 숫자가 없다는 점만 주의하면 쉽게 풀 수 있다.

EX) 5와 6 사이에는 숫자가 없다.

a, b = map(int, input().split())
n1 = min(a, b)
n2 = max(a, b)
n = n2-n1-1
if n1 == n2 or n1+1 == n2:
    n = 0    
print(n)
for i in range(n1+1, n2):
    print(i, end = ' ')
728x90
반응형
728x90
반응형

40점 미만은 40으로 바꾸고 시험 점수의 평균을 구하면 된다.

s = 0
for _ in range(5):
    n = int(input())
    if n < 40:
        n = 40
    s += n
print(s//5)

728x90
반응형
728x90
반응형

생일파티에 올 수 있는 아이들의 수의 최댓값은각 종류별 사탕의 개수에 K를 나눈 몫을 모두 더한 값이다.

for i in range(int(input())):
    N, K = map(int, input().split())
    li = list(map(int, input().split()))
    ans = 0
    for i in li:
        ans += i//K
    print(ans)

728x90
반응형
728x90
반응형

1, 3, 7, 15, 31, 63... 패턴이다.

EX) n = 3

1) 7/2 - 0.5 = 3.5 - 0.5 = 3

2) 3/2 - 0.5 = 1.5 - 0.5 = 1

3) 1/2 - 0.5 = 0.5 - 0.5 = 0

-> ans = 7

for _ in range(int(input())):
    n = int(input())
    print(2**n - 1)

728x90
반응형
728x90
반응형

입력 자신을 제외한 약수들을 리스트에 저장하고 리스트의 합이 입력과 같은지 확인하면 된다.

while 1:
    n = int(input())
    if n == -1:
        break
    li = []
    for i in range(2, n//2+1):
        if n % i == 0:
            li.append(i)
    if sum(li) + 1 == n:
        print('{0} = 1 '.format(n), end = '')
        for j in li:
            print('+ {0} '.format(j) ,end = '')
    else:
        print('{0} is NOT perfect. '.format(n))

728x90
반응형
728x90
반응형

n = int(input())
if n >= 90:
    print('A')
elif n >= 80:
    print('B')
elif n >= 70:
    print('C')
elif n >= 60:
    print('D')
else:
    print('F')

728x90
반응형
728x90
반응형

우선 사전을 사용해서 의상을 종류별로 분류하고 몇 개의 의상이 있는지 센다.

한 종류당 의상의 개수 + 1개의 선택지가 생기는데 1개가 더해진 이유는 입지 않는 경우도 포함했기 때문이다.

각 의상의 종류별 선택지의 개수를 모두 곱하고 모두 안 입었을 경우는 제외해야 되므로 1을 뺀다. 

EX) hat headgear, sunglasses eyewear, turban headgear

headgear 2개, eyewear 1개

-> ans = (2+1)*(1+1) - 1 = 3*2 - 1 = 6 - 1 = 5

for _ in range(int(input())):
    dic = {}
    for i in range(int(input())):
        v, k = input().split()
        if k not in dic:
            dic[k] = 1
        else:
            dic[k] += 1
    ans = 1
    for value in dic.values():
        ans *= (value + 1)
    print(ans - 1)

728x90
반응형
728x90
반응형

문자열의 처음과 마지막을 출력해준다.

for _ in range(int(input())):
    word = input()
    print(word[0]+word[-1])

728x90
반응형
728x90
반응형

에라토스네테스의 체를 사용해야 하는 소수 문제이다. 첫번째 코드가 두 번째 코드가 2배 정도 빠르게 나오는데 왜 그런지 모르겠다... 두 번째 코드는 PyPy3로 제출하면 통과는 된다.

for _ in range(int(input())):
    n = int(input())
    li = [1]*(n+1)
    for i in range(2, int((n+1)**0.5) + 1):
        if li[i] == 1:
            for j in range(i+i, n+1, i):
                li[j] = 0
    ans_li = []
    for i in range(2, n//2+1):
        if li[i] == 1 and li[n-i] == 1:
            ans_li.append([i, abs(i-(n-i))])
    ans_li = sorted(ans_li, key=lambda x : x[1])
    print(ans_li[0][0], n - ans_li[0][0])
for _ in range(int(input())):
    n = int(input())
    li = [1]*(n+1)
    for i in range(2, int((n+1)**0.5) + 1):
        if li[i] == 1:
            for j in range(i+i, n+1, i):
                li[j] = 0
    prime = [i for i in range(2, n+1) if li[i]]
    ans_li = []
    for p in prime:
        if n-p in prime:
            ans_li.append([p, abs(p-(n-p))])
    ans_li = sorted(ans_li, key=lambda x : x[1])
    print(ans_li[0][0], n-ans_li[0][0])
728x90
반응형
728x90
반응형

기본적인 스택 문제이다.

for _ in range(int(input())):
    s = input()
    stack, ok = [], 1
    for c in s:
        if c == '(':
            stack.append(c)
        else:
            if stack == []:
                ok = 0
            else:
                stack.pop()
    print("YES" if stack == [] and ok else "NO")

아래 풀이는 예전에 내가 자료구조 공부하기 전에 풀었던 방식이다.

입력에 '()'가 없을 때까지 replace를 통해 '()'을 공백으로 바꿔준다.

'()'가 없는데 문자열의 길이가 0보다 크다면 VPS가 아니므로 NO, 길이가 0이라면 VPS이므로 YES를 출력한다.

for _ in range(int(input())):
    a = input()
    while '()' in a:
        a = a.replace('()', '')
    if len(a) > 0:
        print('NO')
    else:
        print('YES')

 

728x90
반응형
728x90
반응형

O이면 수를 계속 증가시켜주고 아니라면 초기화해주고 다음에 O가 나왔을 때 1부터 더해지도록 하면 된다.

for _ in range(int(input())):
    cnt = 0
    ans = 0
    for a in input():
        if a == 'O':
            cnt += 1
        else:
            cnt = 0
        ans += cnt
    print(ans)

728x90
반응형
728x90
반응형

n = int(input())
print((n * (n+1)) // 2) 

728x90
반응형

+ Recent posts