안녕하세요. 지난 포스팅의 BOJ 11653번 : 소인수분해에서는 반복문을 이용해서 소인수분해를 구현해보았습니다. 오늘은 BOJ 1978번 : 소수 찾기와 BOJ 2581번 : 소수와 동일한 문제이지만 더욱 빠르게 소수를 찾는 방법에 대해서 알아보겠습니다. 완벽한 코딩은 존재하지 않습니다. 제가 제출한 코드 역시 마찬가지고 그저 참고만 해주시길 바랍니다. 핵심 포인트 기본 구현능력 정수론 지식 제출 코드 import math M, N = map(int, input().split()) for n in range(M, N + 1) : if n == 1 : continue flag = 1 for i in range(2, int(math.sqrt(n)) + 1) : if n % i == 0 : flag = 0;..
안녕하세요. 지난 포스팅의 BOJ 2581번 : 소수에서는 소수를 구하는 알고리즘을 활용해서 주어진 범위 내에서 소수의 합과 가장 작은 소수를 구하는 방법에 대해서 알아보았습니다. 오늘은 소인수분해를 구현해보도록 하겠습니다. 완벽한 코딩은 존재하지 않습니다. 제가 제출한 코드 역시 마찬가지고 그저 참고만 해주시길 바랍니다. 핵심 포인트 기본 구현능력 소인수분해의 정의 제출 코드 N = int(input()) for p in range(2, N + 1) : while N % p == 0 : print(p) N //= p 해설 먼저 어떤 정수 $N$이 입력되면 해당 정수에 대한 소인수분해한 결과를 한 줄씩 출력해주면 됩니다. 방법은 간단합니다. 어차피 1은 모든 정수들에 대해서 나누어떨어지기 때문에 생략하고..
안녕하세요. 지난 포스팅의 BOJ 1978번 : 소수 찾기에서는 소수를 찾는 알고리즘을 적용해보았습니다. 오늘은 이를 활용해서 문제를 풀어보도록 하죠. 지난 포스팅과 큰 차이가 나지 않을테니 쉬울겁니다. 완벽한 코딩은 존재하지 않습니다. 제가 제출한 코드 역시 마찬가지고 그저 참고만 해주시길 바랍니다. 핵심 포인트 기본 구현능력 소수의 정의 제출 코드 M = int(input()) N = int(input()) prime = [] for p in range(M, N + 1) : flag = 1 if p == 1 : continue for n in range(2, p // 2 + 1) : if p % n == 0 : flag = 0; break if flag == 1 : prime.append(p) if ..
안녕하세요. 지난 포스팅의 BOJ 2839번 : 설탕 배달에서는 복잡한 조건문을 걸어서 문제를 풀어보았습니다. 오늘은 소수를 찾는 기본적인 방법에 대해서 알아보도록 하겠습니다. 완벽한 코딩은 존재하지 않습니다. 제가 제출한 코드 역시 마찬가지고 그저 참고만 해주시길 바랍니다. 핵심 포인트 기본 구현능력 소수의 정의 제출 코드 N = int(input()) numbers = map(int, input().split()) cnt = 0 for number in numbers : flag = 1 if number == 1 : continue for n in range(2, number // 2 + 1) : if number % n == 0: flag = 0; break if flag == 1 : cnt += ..
안녕하세요. 지난 포스팅의 BOJ 2775번 : 부녀회장이 될테야에서는 이차원 배열과 이중반복문을 이용해서 문제를 풀어보았습니다. 오늘도 조금 생각을 해야하는 문제를 풀어보도록 하죠. 완벽한 코딩은 존재하지 않습니다. 제가 제출한 코드 역시 마찬가지고 그저 참고만 해주시길 바랍니다. 핵심 포인트 기본 구현능력 제출 코드 N = int(input()) if N % 5 == 0 : print(N // 5) else : cnt = 0 while True : N -= 3 cnt += 1 if N % 5 == 0 : print(cnt + N // 5) break elif N < 3 : print(-1) break 해설 입력 형식은 무게 $N$이 정수형으로 입력됩니다. 그리고 문제의 목적은 3Kg/5Kg 봉투를 최..
안녕하세요. 지난 포스팅의 BOJ 10250번 : ACM 호텔에서는 이차원 배열을 활용해서 문제를 풀어보았습니다. 오늘도 이차원 배열을 활용해서 문제를 풀어보도록 하죠. 완벽한 코딩은 존재하지 않습니다. 제가 제출한 코드 역시 마찬가지고 그저 참고만 해주시길 바랍니다. 핵심 포인트 기본 구현능력 제출 코드 for _ in range(int(input())) : k = int(input()) n = int(input()) floor = [[i for i in range(1, n + 1)]] for i in range(1, k + 1) : line = [] for j in range(1, n + 1) : line.append(sum(floor[i - 1][:j])) floor.append(line) prin..
안녕하세요. 지난 포스팅의 BOJ 2869번 : 달팽이는 올라가고 싶다에서는 파이썬 내장 라이브러리 중 하나인 math 라이브러리의 ceil 함수를 이용해서 부등식 문제를 풀어보았습니다. 오늘은 약간 복잡한 문제를 풀어보도록 하죠. 완벽한 코딩은 존재하지 않습니다. 제가 제출한 코드 역시 마찬가지고 그저 참고만 해주시길 바랍니다. 핵심 포인트 기본 구현능력 제출 코드 for _ in range(int(input())) : H, W, N = map(int, input().split()) i = 0 while True : if N > i * H and N
안녕하세요. 지난 포스팅의 BOJ 1193번 : 분수찾기에서는 그룹수열의 간단한 패턴을 분석하여 문제를 풀어보았습니다. 오늘은 부등식 문제를 해결하는 방법에 대해서 보도록 하겠습니다. 완벽한 코딩은 존재하지 않습니다. 제가 제출한 코드 역시 마찬가지고 그저 참고만 해주시길 바랍니다. 핵심 포인트 math 라이브러리 제출 코드 import math A, B, V = map(int, input().split()) print(math.ceil((V - A) / (A - B) + 1)) 해설 기본적으로 이 문제의 입력은 3개의 변수($A, B, V$)가 공백을 가지고 입력되기 때문에 map 함수를 이용해서 입력을 받아줍니다. 일단, $x$을 달팽이가 $V$ 높이만큼 도달하는 날이라고 정의하겠습니다. 그리고 낮을..