파이썬 335

[프로그래머스] [완전탐색] Lv.1 /최소직사각형 (파이썬/Python)

1. 문제 설명2. 코드 def solution(sizes): rotated = [(max(w,h),min(w,h)) for w,h in sizes] max_w = max(w for w,h in rotated) max_h = max(h for w,h in rotated) return max_w * max_h3. 풀이 과정리스트 sizes에서 w와 h를 받아서 만들수 있는 최소한의 직사각형을 찾는 문제이다.w,h는 원한다면 바뀌어도 되므로rotated변수에 sizes의 원소를 w,h로 받아 max()값을 먼저 받고, min()값을 받아서 저장해둔다.w의 최댓값 max_w는 rotated의 w,h 중 w로 max()로 최댓값을 구한다.h의 최댓값은 w를 h로만 바꿔 진행하면 된다..

[알고리즘] 완전 탐색

가능한 모든 경우의 수를 전부 탐색하여 정답을 찾는 방식의 알고리즘입니다.가장 직관적이고 단순하지만, 계산량이 많아질 수 있기 때문에 입력 크기가 클 경우에는 성능 문제가 발생합니다.✅ 완전 탐색의 기본 개념정의: 문제의 해답을 얻기 위해 모든 경우의 수를 하나하나 확인하는 방식.특징:가장 단순한 방법정확한 해를 보장효율성은 떨어질 수 있음✅ 예시 문제와 접근 방식예시 1: 1~100 사이의 숫자 중에서 어떤 수를 맞추는 게임완전 탐색: 1부터 100까지 전부 시도하면서 정답을 찾는다.예시 2: 주어진 배열에서 두 수의 합이 특정 값이 되는 조합 찾기arr = [1, 2, 3, 4, 5]target = 6for i in range(len(arr)): for j in range(i+1, len(arr..

[백준][11단계 시간 복잡도] 24313번 / 알고리즘 수업 - 점근적 표기 1 (파이썬/Python)

1. 문제 설명2. 코드a1,a0 = map(int,input().split()) c = int(input()) n0 = int(input()) is_valid = True for n in range(n0, 101): if a1 * n + a0 > c * n: is_valid = False break print(1 if is_valid else 0)3. 풀이 과정빅오 표기법의 알고리즘은 결국 f(n) 주어진 입력을 a1,a0, c, n0로 받는다.판별 기준으로 is_valid변수를 True로 초기화한다.n0이상의 모든 수를 비교하기 위해 범위는 n0부터 100까지 range(n0,101)로 한다.range(n0,101)번 반복해서 a1 * n + a0 > c * n을 ..

[프로그래머스] [정렬] Lv.2 /H-index (파이썬/Python)

1. 문제 설명2. 코드 def solution(citations): citations.sort(reverse=True) for i,c in enumerate(citations): if i >= c: return i return len(citations)3. 풀이 과정citations를 정렬 시킨 후 h를 찾으면 된다.먼저 내림차순으로 정렬시키기 위해 sort()에 reverse=True 조건을 넣어준다.enmerate(citations)으로 인덱스 i와 값 c를 for문으로 받는다.i가 c이상이 되면, 지금까지 인용 수가 c의 값보다 커지는 것이므로 바로 i를 반환한다.조건문을 만족하지 않고 반복문을 빠져나오면 마지막 값의 인덱스가 조건을 만족하..

[프로그래머스] [정렬] Lv.2 /가장 큰 수 (파이썬/Python)

1. 문제 설명2. 코드 def solution(numbers): numbers = list(map(str,numbers)) numbers.sort(key=lambda x: x*3, reverse=True) answer = ''.join(numbers)3. 풀이 과정모든 정수를 문자열로 변환하기 위해 map(str,numbers)로 list()한다.원소가 1000미하이기 때문에 문자열로 받은 원소를 3배로 이어 붙여서 글자 비교를 한다.내림차순으로 비교하기 위해 sort(key = lambda x : x*3, reverse=True)로 한다.정렬시킨 문자열을 ''.join(numbers)로 이어 붙여 answer에 선언한다. 4. 추천 코드def solution(numbers): ..

[프로그래머스] [정렬] Lv.1 /K번째수 (파이썬/Python)

1. 문제 설명2. 코드 def solution(array, commands): answer = [] for i,j,k in commands: sliced = array[i-1:j] sliced.sort() answer.append(sliced[k-1]) return answer3. 풀이 과정슬라이싱을 하면 되는 간단한 문제이다.commands에서 i,j,k를 반복문으로 받아서sliced변수에 array를 슬라이싱한 배열을 넣는다. 이때 i는 1-based index이므로 [i-1:j]로 슬라이싱한다.sort() 함수로 sliced 배열을 정렬한다.리스트 초기화 된 answer에 sliced 배열의 k번째 값을 append()로 추가한다.k..