목록분류 전체보기 (167)
JiSoo's Devlog
k, n = map(int, input().split()) a=[] for i in range(k): a.append(int(input())) start = 1 end = max(a) while(start = n: start = mid + 1 else: end = mid - 1 print(end) 길이 범위를 1부터 가장 긴 랜선 길이까지 잘라진 랜선의 개수가 n보다 많으면 mid보다 더 큰 수들만 다시 확인하면 되기 때문에 mid+1 최대 랜선 길이를 구해야 하기 때문에 필요한 랜선 개수보다 작아지는 순간 mid -1
from collections import deque t = int(input()) for i in range(t): n, m = map(int, input().split()) a = deque(list(map(int, input().split()))) c = 0 while(a): b = max(a) f = a.popleft() m -= 1 if b == f: c += 1 if m < 0: print(c) break else: a.append(f) if m < 0: m = len(a) - 1 몇 번째로 출력되는지 알고 싶은 궁금한 문서가 남은 큐 중에서 가장 큰 수가 될 때까지 검사 알고 싶은 문서의 인덱스를 m으로 계산 제일 앞에 있는걸 popleft로 뽑고 알고 싶은 문서 m의 위치가 앞으로 당겨지기..
import sys def roundup(num): if(num - int(num)) >= 0.5: return int(num) + 1 else: return int(num) n = int(sys.stdin.readline()) if n == 0: print(0) else: a = [] for i in range(n): a.append((int(sys.stdin.readline()))) a.sort() b = roundup(n*0.15) print(roundup(sum(a[b:n-b])/len(a[b:n-b]))) 의견이 없는 경우 난이도 0인 것을 고려한다 유의할 점은 round 함수를 쓰면 안 된다 - 사사오입의 원칙 때문(5에서 반올림할 때 앞자리가 홀수면 올림, 짝수면 내림) 슬라이싱을 위해 정렬..
n = int(input()) s = [] a = [] f = 0 c = 1 for i in range(n): num = int(input()) while c
n = int(input()) r = 0 for i in range(1, n+1): a = list(map(int, str(i))) r = sum(a) + i if r == n: print(i) break if i == n : print(0) 216 = 198 + 1 + 9 + 8 여기서 198이 가장 작은 분해합 브루트포스 알고리즘 사용 1부터 시작해 가장 작은 생성자 찾으면 탈출 정수의 각 자릿수를 리스트로 받기 위해 map함수 사용하고 각 자릿수 값을 int로 형변환 예를 들어 245를 입력받았다면 리스트 a는 [2, 4, 5]가 된다 분해합과 입력값이 같으면 그 분해합은 생성자이기 때문에 탈출해 그 값 출력
import sys from collections import Counter n = int(sys.stdin.readline()) a = [] for i in range(n): a.append(int(sys.stdin.readline())) def mean(num): return round(sum(num)/len(num)) def median(num): num.sort() mid = num[len(num)//2] return mid def mode(num): d = Counter(num) k = d.most_common() if len(num) > 1: if k[0][1] == k[1][1]: mod = k[1][0] else: mod = k[0][0] else: mod = k[0][0] return m..
t = int(input()) for i in range(t): k = int(input()) n = int(input()) p = [i for i in range(1, n+1)] # 0층 for j in range(k): for c in range(1, n): p[c] += p[c-1] print(p[-1]) 호수별로 늘어나는 규칙성이 없어 0층부터 구할 층수까지 사람 수 더해가는 방식 0층에서 1호부터 입력받은 호수까지 사람 수 리스트 생성 입력받은 층수만큼 for문을 반복하고 중첩 for문으로 1호부터 입력받은 호수까지 반복 층수가 증가할 때마다 한층 아래의 이전 호실에 사는 사람의 수를 더해준다 반복문이 끝났을 때 가장 마지막 수가 해당하는 층, 호수에 사는 사람의 수
n = int(input()) a = [] for i in range(n): m = int(input()) if m == 0: a.pop() else: a.append(m) r = sum(a) print(r) 수를 잘못 불렀을 때 0을 외친다고 했으니까 0을 불렀다면 최근 수 지우기 0이 나오면 pop()으로 리스트에 들어있던 수 빼주고 아니면 append
while(1): n = input() s = [] if n == '.': break for i in n: if i == '[' or i == '(': s.append(i) elif i == ']': if len(s) != 0 and s[-1] == '[': s.pop() else: s.append(']') break elif i == ')': if len(s) != 0 and s[-1] == '(': s.pop() else: s.append(')') break if len(s) == 0: print('yes') else: print('no') 스택 사용하기 스택 리스트를 만들어서 먼저 들어온 괄호 저장하고 짝 맞는 괄호 들어오면 pop으로 리스트 비워주기 짝이 맞지 않는 게 들어오면 그대로 두기 스택 ..