분류 전체보기

알고리즘

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

알고리즘

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

while(True): _input = input() if(_input == "0"): break if(len(_input)%2 == 0): cnt = len(_input) // 2 sum = "" for i in range(cnt): sum += _input[i] for j in range(cnt - 1, -1, -1): sum += _input[j] if _input == sum: print("yes") else: print("no") else: cnt = len(_input) // 2 + 1 sum = "" for i in range(cnt): sum += _input[i] for j in range(cnt - 2, -1, -1): sum += _input[j] if _input == sum: pr..

알고리즘

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

a = int(input()) b = int(input()) arr = [] while(a < b+1): if a == 2: arr.append(a) else: for i in range(2, a): if a % i == 0: break if i == a - 1: arr.append(a) a += 1 if len(arr) == 0: print(-1) else: print(sum(arr)) print(arr[0]) a == 2 일때는 if a % i == 0 이부분에서 예외가 나니 윗줄에 2일때 리스트에 그냥 더한다.

알고리즘

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

a, b = map(int,input().split()) res = 0 arr = [] arr.append(0) for i in range(1000): for j in range(i): if len(arr) < 1001: arr.append(i) for i in range(b-a+1): res += arr[a] a += 1 print(res) 먼저 리스트에 값들을 모두 넣었다. 문제에서 최대값이 1000이므로 1000까지만 리스트 설정했다.

알고리즘

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

b = int(input()) c = list(map(int, input().split())) d = [] for i in range(b): a = 2 if c[i] == 1: continue else: while(c[i]%a != 0): a += 1 if a == c[i]: d.append(c[i]) print(len(d)) 소수의 개수를 구하는 문제 소수의 정의를 이용해서 새로 만든 리스트에 소수인것만 집어넣어 마지막에 리스트 원소의 개수를 세었다.

changha.
'분류 전체보기' 카테고리의 글 목록 (15 Page)