전체 글
-
itertools - product(), permutations(), combinations()Python 2021. 9. 1. 09:35
product() 1개 이상의 iterable 간에 곱집합을 생성한다. 주어진 문자들로 구성된 길이 n의 모든 문자열을 만들어야 한다거나 할 때 사용하면 되겠다. from itertools import product data1 = 'AB' data2 = '가나' for elem in product(data1, data2): print(''.join(elem)) ''' 출력결과 A가 A나 B가 B나 ''' # argument repeat에 반복할 숫자를 지정하면 이전의 iterable들을 숫자만큼 반복하여 곱집합을 생성한다. for elem in product(data1, repeat=3): print(''.join(elem)) ''' 출력결과 AAA AAB ABA ABB BAA BAB BBA BBB ''..
-
all(), any() 함수Python 2021. 8. 31. 09:15
all() iterable 객체의 모든 요소들이 특정 조건을 만족하는지 확인하는 함수 all(반복 가능한 객체 안에서 찾고자 하는 조건) # all() : iterable 객체의 모든 원소가 특정 조건에 부합하는지 확인하는 함수 test_data = [4, 5, 3, 6, 7, 9] # 예시1 if all(data > 1 for data in test_data): print("모든 원소는 1보다 큽니다.") else: print("1 이하의 원소가 존재합니다.") # 예시2 if all(data > 5 for data in test_data): print("모든 원소는 5보다 큽니다.") else: print("5 이하의 원소가 존재합니다.") 예시1에서 모든 test_data의 원소들이 data > 1..
-
코딩테스트와 실무역량 모두 잡는 알고리즘 (Python반)을 마치며프로그래머스 알고리즘 스터디 2021. 8. 26. 09:25
그래서 얼마나 성취했나? 코딩테스트와 실무역량 모두 잡는 알고리즘 (Python반) 을 수강하면서 설정한 목표가 있었다. 1. 문제의 의도(문제 타입)을 파악할 수 있게 될 것 2. 시간복잡도(효율성 테스트)의 개선을 꾀할 것 3. 엣지 케이스를 잘 만들어 낼 수 있게 될 것 문제 안에서 제한사항 등을 통해 어떤 유형의 문제일지 범위를 좁혀갈 수 있다는 것을 알 수 있었고, 시간 복잡도의 개선을 위해 취해야 할 방법들도 많이 알게 되었다. 스터디 리더님이 여러 엣지 케이스들을 생각해내는 방법을 공유해 주셔서 큰 도움이 되었으나 엣지 케이스를 잘 만들어 내려면 역시 많은 경험이 필요하다는 생각이 들었다. 내가 필요로 했던 부분이 어느 정도 채워졌다고 생각한다. 의외로 도움이 되었던 것 수업을 진행하면서 스..
-
[4주차 - Sorting & Dynamic Programming] 단어퍼즐프로그래머스 알고리즘 스터디 2021. 8. 26. 08:52
본 포스팅은 프로그래머스에서 진행하는 코딩테스트와 실무역량 모두 잡는 알고리즘 스터디(Python반) 6기에 참여 하면서 공부한 내용을 정리한 것이다. (https://programmers.co.kr/learn/courses/12441) 상단부터 [문제설명] [문제풀이] [코드 리뷰를 통해 발견한 개선할 점] [리뷰완료 후 전체코드] 순으로 구성되어 있다. [문제설명] 단어 퍼즐은 주어진 단어 조각들을 이용해서 주어진 문장을 완성하는 퍼즐입니다. 이때, 주어진 각 단어 조각들은 각각 무한개씩 있다고 가정합니다. 예를 들어 주어진 단어 조각이 [“ba”, “na”, “n”, “a”]인 경우 "ba", "na", "n", "a" 단어 조각이 각각 무한개씩 있습니다. 이때, 만들어야 하는 문장이 “banana..
-
[3주차 - Searching] N-Queen프로그래머스 알고리즘 스터디 2021. 8. 25. 10:00
본 포스팅은 프로그래머스 에서 진행하는 코딩테스트와 실무역량 모두 잡는 알고리즘 스터디(Python반) 6기에 참여 하면서 공부한 내용을 정리한 것이다. (https://programmers.co.kr/learn/courses/12441) 상단부터 [문제설명] [문제풀이] [코드 리뷰를 통해 발견한 개선할 점] [리뷰완료 후 전체코드] 순으로 구성되어 있다. [문제설명] N-Queen 가로, 세로 길이가 n인 정사각형으로 된 체스판이 있습니다. 체스판 위의 n개의 퀸이 서로를 공격할 수 없도록 배치하고 싶습니다. 예를 들어서 n이 4인 경우 다음과 같이 퀸을 배치하면 n개의 퀸은 서로를 한 번에 공격할 수 없습니다. 체스판의 가로 세로의 세로의 길이 n이 매개변수로 주어질 때, n개의 퀸이 조건에 만족하..
-
소수판별 알고리즘Data Structure & Algorithm 2021. 8. 16. 14:09
[자연수 n이 소수인지 판별하는 알고리즘]소수의 정의는 2 이상의 자연 수 중 1과 자신만을 약수로 가지는 수이다.따라서 자연수 n이 소수인지 확인하기 위해서는 n을 2부터 n - 1까지의 수로 나눠서 떨어지는 경우가 있는지를 확인하면 된다. 이렇게 할 경우 알고리즘의 시간복잡도가 O(n²)이 된다.자연수의 약수에 대한 규칙을 살펴보면 연산 횟수를 줄일 수 있음을알 수 있다. 16의 약수를 오름차순으로 정리해보면 다음과 같다.16의 약수 = {1, 2, 4, 8, 16}이 약수들을 곱연산 한 결과가 16이 되는 경우는 아래와 같다.1 * 16 = 162 * 8 = 164 * 4 = 168 * 2 = 1616 * 1 = 16 1 * 16 과 16 * 1 그리고 2 * 8과 8 * 2 은 순서만 뒤바뀐 채 ..