목록코팅테스트/백준 문제 모음 (296)
For Programmer

시간초과 코드 import math while True: n = int(input()) if n == 0: #0이면 반복문 탈출 break array1 = [True for _ in range(2 * n + 1)] #소수 판별을 위한 리스트설정(True면 소수) array1[0], array1[1] = False, False #0,1은 소수가 아니기에 False로 설정 # 에라토스테네스의 체 공식 for i in range(2, int(math.sqrt(2 * n) + 1)): #2부터 int(math.sqrt(2 * n) 까지 돈다. if array1[i]: #만약 array1[i]가 소수라면 j = 2 #i에 곱해줄 j값을 2부터 설정 while i * j 에라토스테네스의 체로 다음과 같이 코드를 짰..

import math m, n = map(int, input().split()) array = [True for i in range(n + 1)] # 0~n 까지 모두 소수로 우선 정의해준다.(True면 소수) for i in range(2, int(math.sqrt(n) + 1)): #0,1을 제외하고 2부터 n이 아닌 n의 제곱근 까지만 검사하면 된다.(n의제곱근이후부터는 반복이기 때문) if array[i] == True: #만약 i가 소수라면 j = 2 # i에 곱해줄 j를 2부터 선언 while i * j 에라토스테네스의 체로 풀이한 문제이다. 기본적으로 소수를 판별할 리스트를 미리 선언한 후 만약 소수가 아닐 경우 False값으로 변경해줌으로써 문제를 해결한다. 여기서 중요한 점은 m,n에서 ..

나의 코드 n = int(input()) for i in range(2,n+1): if n == 1: #만약 n이 1이라면 break #반복문을 빠져나온다. while True: # 무한루프 if n % i != 0: # 만약 n이 i로 나누어 떨어지지 않는다면 break # 반복문을 빠져나온다. n //= i # n을 i로 나누어 준다음 그몫을 n에 다시 대입. print(i) # i출력 -> n을 2부터 n까지 직접 나눠보면서 출력하면 되는 쉬운 문제이다. if를 걸어 2부터 n까지 모두 돌지 않도록 조건을 추가해주는 것이 좋다.

나의 코드 m = int(input()) n = int(input()) error = 0 #소수 유무(0 이면 소수, 1이면 소수x) array = [] #소수들을 저장할 배열 선언 for i in range(m, n + 1): #m부터 n까지 각원소 i에 접근 for j in range(2, i): #각 원소 i마다 2부터i-1 까지의 수로 나누어 준다. if i % j == 0: #만약 i가 2부터 i-1까지의 수로 나누어 떨어진다면 error += 1 #소수가 아님 break #반복문을 빠져나온다. if error == 0 and i != 1: #만약 반복문 후에 소수가 맞고 그것이 1이 아닌경우 array.append(i) #해당 원소를 배열에 추가해준다. error = 0 #다시 에러값을 0으로..

나의 코드 n = int(input()) input_num = list(map(int, input().split())) count = 0 #소수 개수 세기 error = 0 #에러 유무 (0이면 소수, 1이면 소수아님) for i in input_num: #inputnum 리스트의 각 원소 꺼내기 for j in range(2, i): #각각의 원소 i마다 2 부터 (i-1)까지 수로 i를 나누기 if i % j == 0: #본인 i이외의 수로 나눠서 나머지가 0이라면 소수가 아님 error += 1 #그럴 경우 에러 추가 break #반복문 탈출 if error == 0 and i != 1: #만약 에러도 없고 i도 1이 아니라면 count += 1 #소수의 개수 추가 error = 0 #다시 erro..

나의 코드 (이중 반복문 이용) n = int(input()) count = [] #개수를 담기 위한 봉지의 개수 for i in range((n // 5) + 1): #입력 최대값 5000을 만들 수 있는 5kg그램만 사용할 때의 최대 반복 횟수범위 for j in range((n // 3) + 2): #입력 최대값 5000을 만들 수 있는 3kg그램만 사용할 때의 최대 반복 횟수범위 if n == 5 * i + 3 * j: # 입력한 값과 5kg 사용 개수와 3kg 사용 개수의 합이 같을 때 count.append(i+j) #해당 값(봉지의 개수)를 count 배열에 넣어 준다. if len(count) == 0: #만약 만들 수 있는 개수의 조합이 없다면 print(-1) #-1 출력 else: #..

나의 코드 t = int(input()) # 전체 테스트케이스 수 for _ in range(t): k = int(input()) # 층의 개수 n = int(input()) # 호의 개수 array2 = [[] for i in range(k + 1)] # 각 층마다 + 각 층의 각 호마다 사람수를 입력하기 위한 이중리스트 선언 array2[0] = [i for i in range(1, 14)] # 0층의 각 호의 사람은 1~14 명으로 지정 for i in range(1, k + 1): # 입력한 층의 개수 까지 돈다 for j in range(n): # 입력한 호의 개수까지 돈다 array2[i].append(sum(array2[i - 1][0:j + 1])) # 각층의 각 호마다 이전층의 같은 호까..

-> 이문제의 키포인트는 가로폭의 방번호와 세로높이의 방번호를 따로 구해야 한다는 것이다. 그것만 알면 쉽게 풀 수 있다. t = int(input()) for _ in range(t): h, w, n = map(int, input().split()) widthCount = 0 # 호텔방의 폭에서 몇번째 방에 들어가야 하는지 즉, 정답이 402호면 2 , 1203호면 3 을 찾는 변수 heightCount = 0 # 호텔방의 층에서 몇번째 방에 들어가야 하는지 즉, 정답이 402호면 4 , 1203 호면 12를 찾는 변수 for i in range(1, w + 1): # 호텔방의 폭만큼 반복문을 돈다 if h * i >= n: # 만약 높이 * i 가 n번째 보다 크거나 같다면 widthCount = i..