Computer Science/외우면 좋은 로직
-
미리 알아가자. 1. 소수 판별 알고리즘 특정 N이 소수인지 아닌지 판별 특정 수가 소수인지 아닌지 알아 보려면 for문을 써야한다! # 소수 판별 함수ef is_prime_number(n): end = int(n**(1/2)) for i in range(2, end+1): if n % i == 0: return False return Trueprint(is_prime_number(4)) # 4는 소수가 아님print(is_prime_number(7)) # 7은 소수임 약수의 성질을 생각했을 때 약수(제곱근)까지만 확인하면 된다. 모든 약수가 가운데 약수를 기준으로 곱셈 연산에 대해 대칭을 이루는 것을 알 수 있다예를 들어 16의 약수는 1, ..
1. 소수 판별 알고리즘, 2. N까지 수에서 소수들 뽑기(에라토스테네스의 체) 외우기미리 알아가자. 1. 소수 판별 알고리즘 특정 N이 소수인지 아닌지 판별 특정 수가 소수인지 아닌지 알아 보려면 for문을 써야한다! # 소수 판별 함수ef is_prime_number(n): end = int(n**(1/2)) for i in range(2, end+1): if n % i == 0: return False return Trueprint(is_prime_number(4)) # 4는 소수가 아님print(is_prime_number(7)) # 7은 소수임 약수의 성질을 생각했을 때 약수(제곱근)까지만 확인하면 된다. 모든 약수가 가운데 약수를 기준으로 곱셈 연산에 대해 대칭을 이루는 것을 알 수 있다예를 들어 16의 약수는 1, ..
2024.09.30 -
정수 A와 B가 입력될 때 , A개의 원소에서 B개의 원소를 뽑는 조합에 대한 총 경우의 수를 출력하는 프로그램을 작성하세요. 이 문제에 대해서 다음과 같이 풀어볼 수 있다. import sys input=sys.stdin.readline from itertools import combinations if __name__=="__main__": A,B=map(int, input().split()) print(len(list(combinations(range(A), B)))) 그러나 이렇게 풀면 시간초과 문제를 겪게 된다. 결국 재귀를 이용하는 등 조합 함수를 직접 짜주어야 한다. 방법 1 import sys sys.stdin=open('input.txt', 'r') input=sys.stdin.readl..
조합, itertools 없이 시간초과 문제 해결하기정수 A와 B가 입력될 때 , A개의 원소에서 B개의 원소를 뽑는 조합에 대한 총 경우의 수를 출력하는 프로그램을 작성하세요. 이 문제에 대해서 다음과 같이 풀어볼 수 있다. import sys input=sys.stdin.readline from itertools import combinations if __name__=="__main__": A,B=map(int, input().split()) print(len(list(combinations(range(A), B)))) 그러나 이렇게 풀면 시간초과 문제를 겪게 된다. 결국 재귀를 이용하는 등 조합 함수를 직접 짜주어야 한다. 방법 1 import sys sys.stdin=open('input.txt', 'r') input=sys.stdin.readl..
2024.03.08 -
자연수 N 이하의 소수 개수를 출력하는 프로그램을 작성하세요. 이때 소수란 양의 약수가 자기 자신과 1만 존재하는 수를 말합니다. 또한 어떤 정수 A가 어떤 정수 B의 약수라는 것은 B를 A로 나누었을 때 나누어떨어짐을 의미합니다. [입력값 설명] 『첫 번째 줄에 1 이상 1000 이하의 자연수 N이 주어집니다.』 [출력값 설명] 『1 이상 N 이하의 자연수 중에서의 소수의 개수를 출력합니다.』 ------------------------------------------------------------------------ 예제 입력1 978 예제 출력1 165 예제 입력2 99 예제 출력2 25 import sys input = sys.stdin.readline N = int(input()) ans =..
⭐⭐⭐소수 구하기자연수 N 이하의 소수 개수를 출력하는 프로그램을 작성하세요. 이때 소수란 양의 약수가 자기 자신과 1만 존재하는 수를 말합니다. 또한 어떤 정수 A가 어떤 정수 B의 약수라는 것은 B를 A로 나누었을 때 나누어떨어짐을 의미합니다. [입력값 설명] 『첫 번째 줄에 1 이상 1000 이하의 자연수 N이 주어집니다.』 [출력값 설명] 『1 이상 N 이하의 자연수 중에서의 소수의 개수를 출력합니다.』 ------------------------------------------------------------------------ 예제 입력1 978 예제 출력1 165 예제 입력2 99 예제 출력2 25 import sys input = sys.stdin.readline N = int(input()) ans =..
2024.03.08 -
제한 시간이 1초인 문제에 대한 예시이다. N의 범위가 500인 경우 : 시간 복잡도가 O(N^3)인 알고리즘으로 설계하면 풀이 가능 N의 범위가 2,000인 경우 : 시간 복잡도가 O(N^2)인 알고리즘으로 설계하면 풀이 가능 N의 범위가 100,000인 경우 : 시간 복잡도가 O(NlogN)인 알고리즘으로 설계하면 풀이 가능 N의 범위가 10,000,000인 경우 : 시간 복잡도가 O(N)인 알고리즘으로 설계하면 풀이 가능 코딩 테스트 환경에서는 1초에 2,000만에서 1억정도의 연산을 처리할 수 있다. 대부분의 시간제한은 1초인 경우가 많기 때문에 복잡도를 신중히 고려해야한다. 출처: https://xodud2972.tistory.com/60 [디티트래커:티스토리]
코딩 테스트 시간 계산제한 시간이 1초인 문제에 대한 예시이다. N의 범위가 500인 경우 : 시간 복잡도가 O(N^3)인 알고리즘으로 설계하면 풀이 가능 N의 범위가 2,000인 경우 : 시간 복잡도가 O(N^2)인 알고리즘으로 설계하면 풀이 가능 N의 범위가 100,000인 경우 : 시간 복잡도가 O(NlogN)인 알고리즘으로 설계하면 풀이 가능 N의 범위가 10,000,000인 경우 : 시간 복잡도가 O(N)인 알고리즘으로 설계하면 풀이 가능 코딩 테스트 환경에서는 1초에 2,000만에서 1억정도의 연산을 처리할 수 있다. 대부분의 시간제한은 1초인 경우가 많기 때문에 복잡도를 신중히 고려해야한다. 출처: https://xodud2972.tistory.com/60 [디티트래커:티스토리]
2023.12.24 -
내장함수 sum(): iterable 객체(List, Dict, Tuple 등)의 모든 원소의 합을 반환 data = [1, 2, 3] res = sum(data) print(res) >>>> 6 min(): 파라미터가 2개 이상 들어왔을 때 가장 작은 값 반환 data = [1, 2, 3] res = min(data) print(res) >>>> 1 max(): 파라미터가 2개 이상 들어왔을 때 가장 큰 값 반환 data = [1, 2, 3] res = max(data) print(res) >>>> 3 sorted(): iterable 객체가 들어왔을 때, 정렬된 결과를 반환 data = [2, 4, 5, 6, 1, 2, 10, 0] # ASC 정렬 sorted(data) >>> [0,1,2,2,4,5..
파이썬 코딩테스트에 자주 사용되는 파이썬 라이브러리내장함수 sum(): iterable 객체(List, Dict, Tuple 등)의 모든 원소의 합을 반환 data = [1, 2, 3] res = sum(data) print(res) >>>> 6 min(): 파라미터가 2개 이상 들어왔을 때 가장 작은 값 반환 data = [1, 2, 3] res = min(data) print(res) >>>> 1 max(): 파라미터가 2개 이상 들어왔을 때 가장 큰 값 반환 data = [1, 2, 3] res = max(data) print(res) >>>> 3 sorted(): iterable 객체가 들어왔을 때, 정렬된 결과를 반환 data = [2, 4, 5, 6, 1, 2, 10, 0] # ASC 정렬 sorted(data) >>> [0,1,2,2,4,5..
2023.12.24 -
이번에는 2차원 배열, 격자의 요소들을 90,180,270 회전해보는 함수를 짜보자 관련문제 : 프로그래머스 행렬 테두리 회전하기 2차원 배열은 90도 단위로 회전한다. 90,180,270, 360도. 360도 회전한 결과는 처음 배열과 같으며 이후에는 이 4개의 형태를 반복한다. 예로 3x3 격자가 있다고 하자. [1,2,3]이 첫 행이 어떻게 변화하는지 먼저 살펴보고 모두 적용해보자. 90도 회전하면 격자의 각 요소는 그림과 같은 값을 갖는다 N=1은 (0,0)에서 (0,2)가 되었고 N=2는 (0,1)에서 (1,2)가 되었다. N=3은 (0,2)에서 (2,2)가 되었다. 각 상태의 행과 열을 기준으로 살펴보자. 여기서 규칙성이 보인다. 회전 전의 열 번호와 회전 후의 행 번호가 일치한다. 그리고 회..
2차원 배열 회전이번에는 2차원 배열, 격자의 요소들을 90,180,270 회전해보는 함수를 짜보자 관련문제 : 프로그래머스 행렬 테두리 회전하기 2차원 배열은 90도 단위로 회전한다. 90,180,270, 360도. 360도 회전한 결과는 처음 배열과 같으며 이후에는 이 4개의 형태를 반복한다. 예로 3x3 격자가 있다고 하자. [1,2,3]이 첫 행이 어떻게 변화하는지 먼저 살펴보고 모두 적용해보자. 90도 회전하면 격자의 각 요소는 그림과 같은 값을 갖는다 N=1은 (0,0)에서 (0,2)가 되었고 N=2는 (0,1)에서 (1,2)가 되었다. N=3은 (0,2)에서 (2,2)가 되었다. 각 상태의 행과 열을 기준으로 살펴보자. 여기서 규칙성이 보인다. 회전 전의 열 번호와 회전 후의 행 번호가 일치한다. 그리고 회..
2023.10.14