반응형

Algorithm_study 19

Python_math.comb()

Python_itertools모듈의 combinations함수 파이썬의 itertools 모듈은 유용한 반복자 기능을 제공하는 모듈이다. itertools 모듈의 'combinations'함수는 주어진 시퀀스에서 지정된 길이의 가능한 모든 조합을 생성한다. itertools.combinations(iterable,r) oaho.tistory.com math.comb()함수는 조합(combination) 을 계산하는 함수다. 조합은 서로 다른 n개의 원소에서 r개를 선택하는 경우의 수를 의미한다. math.comb(n, r) : n개의 원소 중에서 r개를 선택하는 경우의 수, 즉 nCr = n!/(r!(n-r)!) itertools.combinations() 함수도 조합을 구할 때 사용하지만 , 파라미터와..

Python_itertools모듈의 combinations함수

파이썬의 itertools 모듈은 유용한 반복자 기능을 제공하는 모듈이다. itertools 모듈의 'combinations'함수는 주어진 시퀀스에서 지정된 길이의 가능한 모든 조합을 생성한다. itertools.combinations(iterable,r) - iterable : 조합을 만들어낼 시퀀스 (리스트, 튜플, 문자열 등) - r : 조합을 만들 길이 예시: 리스트 [1, 2, 3]에서 길이가 2인 모든 조합은 (1, 2), (1, 3), (2, 3) 이다. 'combination' 함수 사용하여 생성할 수 있다. 'combinations'함수는 프로그래밍 문제에서 가능한 모든 조합을 생성하거나, 최적해를 찾을 때 유용하게 사용될 수 있다.

Python_문자열 뒤집기

1. reversed()함수 이용하기 reversed()함수는 iterable객체(문자열, 리스트 ,튜플 등)을 역순으로 뒤집는 함수다. reversed함수의 결과는 iterator객체이므로, 이를 다시 리스트나 문자열로 변환해야한다. string= "hello" reversed_string = ''.join(reversed(string)) print(reversed_string) 2. [::-1]이용하기 슬라이싱 [::-1]을 이용해서 뒤집을 수 있다. string= "hello" reversed_string = string[::-1] print(reversed_string) => 결과는 "olleh" 로 출력된다.

BAEKJOON #1931

문제요약 N개의 회의에 대하여 회의 시작시간과 끝나는 시간이 주어진다. 한 개의 회의실에 시간이 겹치지 않게 하면서 사용할 수 있는 회의의 최대 개수를 찾아라. 아이디어 그리디 알고리즘 문제니까 최적의 경우를 먼저 골라야한다. 각 회의의 시작 시간과 끝나는 시간이 정렬되지 않은 체 주어진다. ex) (0,2), (2, 3), (3, 8), (3, 6), (6,9) 가 주어졌다고 가정하자. (0, 2), (2, 3) 고르고 난 뒤, (3, 8)과 (3, 6)중에 (3, 6)을 골라야 최대이다. 현재 회의 끝나는 시간 회의실 이용 가능 끝나는 시간 기준으로 회의실 이용 가능한지 여부가 판단된다. 입력받은 회의 시간들은 시작 시간 기준으로 오름차순으로 정렬해주지 않는다. 즉,..

BAEKJOON #4796

문제 요약 캠핑장을 연속하는 P일 중, L일동안만 사용할 수 있다. 강산이는 이제 막 V일짜리 휴가를 시작했다. (L< P < V) 아이디어 휴가일수(V)에서 P/L만큼 조정해야한다. ex) P=8, L=5, L=20 캠핑장을 연속하는 8일 중, 5일동안만 사용할 수 있다. 강산이는 이제 막 20일짜리 휴가를 시작했다. 이를 표로 시각화 해보면 더 이해하기 쉽다. 1일 2일 3일 4일 5일 1일 2일 3일 4일 1일 2일 3일 4일 5일 8일 중에 5일을 사용하고 난뒤, 3일 뒤에 사용할 수 있다. 8일씩 묶고 한 묶음 안에 5일씩 더해주고, 남은 5일은 3일 뒤니까 5일 더할 수 있다. 이를 식으로 표현해보자. V//P*L + (V%8) 20//8*5 + (20%8) 그런데, 문제가 생긴다. 만약 나머..

BAEKJOON #2720

이 문제에서 가장 중요한 핵심 포인트는 "동전의 개수 최소" 를 구하는 것이다. 동전의 개수가 최소가 되려면 동전이 최대 값이어야 한다. ▶ 큰 값 부터 거스름돈을 나누고 (쿼터>다임>니켈수>페니) 하나씩 차례대로 나눈 몫이 정답이다. 코드 : num = int(input()) case = [] for i in range(num): change = int(input()) #거스름돈 입력 case.append(change) #각 테스트케이스 리스트로 담아둠 for i in case: # 테스트 케이스 마다 가장 큰 수부터 나눈 몫 구하기 quo1 = i // 25 res1 = i % 25 quo2 = res1 // 10 res2 = res1 % 10 quo3 = res2 // 5 res3 = res2 % ..

문제 풀다 시간 제한 걸릴 때 참고사항

📌 최대 시간이 1초일 때 입력 데이터 수에 따른 시간 복잡도 ▪ 1,000개 -> O(n2) 이하 ▪ 10,000 -> O(n2) 미만 ▪ 100,000 -> O(nlogn) 이하 ▪ 1,000,000 -> O(nlogn)미만 ▪ 그 이상이라면 -> 입력 데이터 수가 백만 개 이상이라면 문제의 조건을 유심히 살펴보기 , 특정 알고리즘을 사용하도록 요구할 가능성이 큼 📌 자주 사용하는 자료 구조에 따른 시간 복잡도 자료 구조 탐색 삽입 삭제 배열 O(n) O(n) O(n) 정렬된 배열 O(logn) O(n) O(n) 연결 리스트 O(n) O(1) O(1) 스택/큐 O(n) O(1) O(1) 해시 O(1) O(1) O(1) 이진 트리 O(logn) O(logn) O(logn) 📌 문제 풀다 시간 제한 걸리..

반응형