알고리즘

알고리즘

<백준> 2775번 파이썬 알고리즘

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를 만들어 놓았다

알고리즘

<백준> 2292번 파이썬 알고리즘

n = int(input()) res = 1 cnt = 1 six = 6 while n > res: cnt += 1 res += six six += 6 print(cnt) 규칙을 찾으면 간단하다 n+1, n 의 차이가 6씩 계속 증가한다

알고리즘

<백준> 2231번 파이썬 알고리즘

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을 통해 하나씩 리스트에 저장해주는 형식으로 하니 더 간편하다

알고리즘

<백준> 2164번 파이썬 알고리즘

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])

알고리즘

<백준> 2108번 파이썬 알고리즘

import sys from collections import Counter n = int(sys.stdin.readline()) arr = [] for i in range(n): arr.append(int(sys.stdin.readline())) ## 위까지 input def avg(arr): return round(sum(arr)/n) def mid(arr): l = len(arr) arr.sort() return arr[l//2] def many(arr): arr.sort() nums_s = Counter(arr).most_common() if len(nums_s) > 1: if nums_s[0][1] == nums_s[1][1]: return nums_s[1][0] else: return nums..

알고리즘

<백준> 1966번 파이썬 알고리즘

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) 예전 프로그래머스에서도 본 문제이다 처음에는 구현하기 어려웠는데 이번에 다시 해보니 이해가 빨리 됐다!

알고리즘

<백준> 1929번 파이썬 알고리즘

실패 코드 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..

알고리즘

<백준> 1874번 파이썬 알고리즘

n = int(input()) res = [] stk = [] cnt = 1 temp = True for _ in range(n): m = int(input()) while cnt

알고리즘

<백준> 1920번 파이썬 알고리즘

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)라는 차이점 때문이다

알고리즘

<백준> 1436번 파이썬 알고리즘

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 앞에 숫자만 붙이면 되는건줄 알았는데 그럴리가 없어 다시 생각해보고 결국 다른 블로그를 참고했다 주어진 범위에서 모든 경우를 생각하는 문제다

changha.
'알고리즘' 카테고리의 글 목록 (11 Page)