n = int(input()) for _ in range(n): m = int(input()) k = int(input()) a = [i for i in range(1, 15)] for i in range(m): b = [] for j in range(14): b.append(sum(a[0:j+1])) a = b print(a[k-1]) 0층을 a로 세팅해놓고 for 문을 돌리면서 m층까지 쌓는다고 생각한다 그러는 과정에 필요한 임의의 리스트 b를 만들어 놓았다
n = int(input()) res = 0 for i in range(1, n+1): A = list(map(int, str(i))) res = i + sum(A) if res == n: print(i) break if i == n: print(0) 자리수마다 나눠서 더해주려했는데 map을 통해 하나씩 리스트에 저장해주는 형식으로 하니 더 간편하다
import sys from collections import deque n = int(sys.stdin.readline()) queue = deque() for i in range(1, n+1): queue.append(i) while(len(queue) > 1): queue.popleft() queue.append(queue.popleft()) print(queue[0])
n = int(input()) for _ in range(n): m, k = map(int, input().split()) i = list(map(int,input().split())) i_ = [0 for _ in range(m)] i_[k] = 1 cnt = 0 while True: if i[0] == max(i): cnt += 1 if i_[0] == 1: print(cnt) break else: i_.pop(0) i.pop(0) else: i.append(i[0]) i.pop(0) i_.append(i_[0]) i_.pop(0) 예전 프로그래머스에서도 본 문제이다 처음에는 구현하기 어려웠는데 이번에 다시 해보니 이해가 빨리 됐다!
실패 코드 import sys n, m = map(int, sys.stdin.readline().split()) def prime(num): for j in range(2, num): if num % j == 0: return False return True for i in range(n, m+1): if prime(i) == True: print(i) else: continue 소수 구하는 부분에서 시간 단축을 시켜줘야 한다 n 의 소수 판별을 위해 2 부터 n-1 까지 반복문을 돌렸는데 그럴 필요 없이 n의 제곱근까지만 돌리면 된다 수정 코드 import sys import math n, m = map(int, sys.stdin.readline().split()) def prime(num): if n..
import sys a = int(sys.stdin.readline()) A = set(map(int, sys.stdin.readline().split())) m = int(sys.stdin.readline()) M = list(map(int, sys.stdin.readline().split())) for i in M: if i in A: print(1) else: print(0) 시간초과가 나서 구글링을 해보니 A부분을 set으로 바꿔줘야 했다. list 는 O(n)이고 set은 O(1)라는 차이점 때문이다
n = int(input()) nth = 666 cnt = 0 while True: if '666' in str(nth): cnt += 1 if cnt == n: print(nth) break nth += 1 처음에 단순히 666 앞에 숫자만 붙이면 되는건줄 알았는데 그럴리가 없어 다시 생각해보고 결국 다른 블로그를 참고했다 주어진 범위에서 모든 경우를 생각하는 문제다