전체 글
-
[python] 프로그래머스 K번째 수 🖖파이썬/알고리즘 공부 2021. 10. 28. 20:19
K번째수 ❓문제 설명 배열 array의 i번째 숫자부터 j번째 숫자까지 자르고 정렬했을 때, k번째에 있는 수를 구하려 합니다. 예를 들어 array가 [1, 5, 2, 6, 3, 7, 4], i = 2, j = 5, k = 3일경우 1. array의 2번째부터 5번째까지 자르면 [5, 2, 6, 3]입니다. 2. 1에서 나온 배열을 정렬하면 [2, 3, 5, 6]입니다. 3. 2에서 나온 배열의 3번째 숫자는 5입니다.배열 array, [i, j, k]를 원소로 가진 2차원 배열 commands가 매개변수로 주어질 때, commands의 모든 원소에 대해 앞서 설명한 연산을 적용했을 때 나온 결과를 배열에 담아 return 하도록 solution 함수를 작성해주세요. ✅제한사항 array의 길이는 1 ..
-
[python] 🏑프로그래머스 조이스틱 🏑파이썬/알고리즘 공부 2021. 10. 27. 23:03
조이스틱💢 ❓문제설명 조이스틱으로 알파벳 이름을 완성하세요. 맨 처음엔 A로만 이루어져 있습니다. ex) 완성해야 하는 이름이 세 글자면 AAA, 네 글자면 AAAA 조이스틱을 각 방향으로 움직이면 아래와 같습니다. ▲ - 다음 알파벳 ▼ - 이전 알파벳 (A에서 아래쪽으로 이동하면 Z로) ◀ - 커서를 왼쪽으로 이동 (첫 번째 위치에서 왼쪽으로 이동하면 마지막 문자에 커서) ▶ - 커서를 오른쪽으로 이동 예를 들어 아래의 방법으로 "JAZ"를 만들 수 있습니다. - 첫 번째 위치에서 조이스틱을 위로 9번 조작하여 J를 완성합니다. - 조이스틱을 왼쪽으로 1번 조작하여 커서를 마지막 문자 위치로 이동시킵니다. - 마지막 위치에서 조이스틱을 아래로 1번 조작하여 Z를 완성합니다. 따라서 11번 이동시켜 "..
-
[python] 🚨 다이나믹 프로그래밍파이썬/알고리즘 공부 2021. 10. 26. 21:38
동적계획법(dynamic Programming) 하나의 큰 문제를 여러 개의 공통되는 작은 문제로 나누어서 작은 문제의 정답들을 결합하여 알고리즘을 푸는 과정(규칙을 찾아가는 과정) 😂이번 동적계획법에서는 저번에 다뤘던 동적계획법으로부터 좀 더 나아가서 좀 더 깊게 들어가보자~ 라는 마음으로 시작했는데... 너무 어렵다.... 오늘도 역시 기본으로 끝내지는 거같다.... ➰피보나치 수열: 단순 재귀 def fibo(x): if x == 1 or x == 2: return 1 return fibo(x-1) + fibo(x-2) print(fibo(s)) >>> 3 ➰탑다운(Top down) vs 보텀업(Bottom up) ✅탑다운(메모이제이션) - 하향식이라고도 하며 재귀함수를 이용해 큰 문제를 해결하기 ..
-
[python]🔑이진탐색 알고리즘파이썬 2021. 10. 24. 13:51
💢이진탐색 ➰이진탐색 개념잡기 ✅순차 탐색: 리스트 안에 있는 특정한 데이터를 찾기 위해 앞에서부터 데이터를 하나씩 확인하는 방법 ✅이진탐색: 정렬되어 있는 리스트에서 탐색 범위를 절반씩 좁혀가며 데이터를 탐색하는 방법 이진 탐색은 시작점, 끝점, 중간점을 이용하여 탐색 범위를 설정 4를 찾고자 하는 경우라고 생각해보자 ✅[step 1] 정렬되어 있는 리스트 [0, 2, 4, 6, 8, 10, 12, 14, 16, 18] 시작점: 0(인덱스)-'0'을 의미 끝점: 9(인덱스) -'8'을 의미 중간점: 4(인덱스,소수점 이하제거) -'18'을 의미 우리가 찾고자하는 숫자 '4'와 인덱스 4의 있는 숫자를 비교했을때 8이 더 클 경우 우리는 8보다 오른쪽에 있는 숫자들은 생각할 필요가없다. 그러면 끝점을 8..
-
[python]정렬 알고리즘파이썬 2021. 10. 23. 17:29
💢 정렬 알고리즘 💢선택정렬 리스트가 아래와 같이 있을때 선택정렬을 적용 시켜보자 [7, 5, 9, 0, 3, 1, 6, 2, 4, 8] [✅step0]: 처리되지 않은 데이터중 가장 자근 '0'을 선택해 가장 앞의'7'과 바꿔준다. [0, 5, 9, 7, 3, 1, 6, 2, 4, 8] [✅step1]: 처리되지 않은 데이터 중 가장 작은 '1'을 선택해 가장 앞의 '5'와 바꿔준다. [0, 1, 9, 7, 3, 1, 5, 2, 4, 8] [✅stpe2]: 처리되지 않은 데이터 중 가장 작은'3'을 선택해 가장앞의'7'과 바꿔준다. [0, 1, 2, 7, 3, 1, 5, 9, 4, 8] 위와 같은 작업을 반복하다 보면..
-
[python] Regular Expression(정규표현식) #Step2파이썬 2021. 10. 23. 13:05
정규표현식Regular expression) #step2 💢자주사용되는 문자 의미 내용 . 임의의 한문자를 의미 ? 문자가 존재하거나 존재하지 않음(0,1) * 문자가 미존재 또는 무한대로 존재(0~) + 문자가 한번 이상 무조건 존재(1~*) ^ 기호 바로 뒤의 문자로 문자열이 시작 $ 기호 바로 앞의 문자로 문자열이 끝남 {m} m만큼 반복 {m, n} m~n만큼 반복 가능 \\ 역슬래쉬ㅜ 글자 자체를 검색 \d 모든 숫자를 검색, [0-9]와 동일 \D [^0-9]와 동일, 숫자를 제외한 모든 문자를 검색 \s 공백을 검색(space) \S 공백이 아닌 문자를 검색 \w 숫자 또는 문자를 검색[a-zA-Z0-9] word를 표현하며 \W 알파벳, 숫자가 아닌 문자를 의미[^a-zA-Z0-9] \b ..
-
[python] Regular Expression(정규표현식) #Step1파이썬 2021. 10. 23. 00:16
💢정규표현식Regular expression) #step1 정규표현식이란?? 복잡한 문자열을 처리할 때 사용하는 기법으로, 파이썬만의 문법이 아니라 문자열을 처리하는 모든 곳에서 사용한다. 밑에서 정규표현식이 왜 필요한지 살펴 보도록 하자! ❓왜 정규 표현식을 사용할까? 예를 들어 주민등록번호 번호 형태(ex)111111-1111111))로 있을때 보안상 뒤에있는 7자리를 *로 처리하고 싶을 때를 생각해보자. 정규 표현식을 모를 경우 아래와 같이 구현을 해야 한다. 📜일반적 코드 data = """ park 111111-1111111 kim 222222-2222222 """ result = [] for line in data.split("\n"): word_result = [] for word in li..
-
[python]Algo - 구현🔑파이썬/알고리즘 공부 2021. 10. 21. 19:29
구현🚓 ❓모함가 길드 문제 문제 ✅코드 n = int(input()) data = list(map(int, input().split())) data.sort() print(data) result = 0 count = 0 for i in data: count += 1 if count >= i: result += 1 count = 0 print(result) result = 0 count = 0✅문제 접근법 오름차순 정률 이후에 공포다 가장 낮은 모험가부터 하나씩 확인 앞에서부터 공포도를 하나씩 확인하며 '현재 그룹에 포함된 모험가의 수'가 '현재 확인하고 있는 공포도'보다 크거나 같다면 이를 그룹으로 설정 이행렬 감 잡기 위한 구현 ✅코드 for i in range(5): fo..