본문 바로가기
반응형

알고리즘9

[python 문제 풀이] HackerRank - Mini-Max Sum 문제 요약 5개로 이루어진 배열이 존재함 => 이 배열 속 숫자들을 더해 가장 작은 합, 가장 큰 합을 구하는 문제 def miniMaxSum(arr): # Write your code here arr = sorted(arr) minsum = 0 maxsum = 0 for i in range(len(arr)-1): minsum += arr[i] maxsum += arr[-i-1] print(minsum, maxsum) 배열 순서를 잘 생각해보면 쉽게 풀릴 문제! Mini-Max Sum | HackerRank Find the maximum and minimum values obtained by summing four of five integers. www.hackerrank.com 2021. 11. 11. 12:45
[python 문제 풀이] HackerRank - Grading Student 문제 요약 1의 자리 숫자가 3이상 또는 7 이상 일 경우 반올림을 하고 아닐 경우에는 반올림 하지 않고 출력 만약 38보다 크기가 작다면 위에 조건은 무시하고 그대로 출력 def gradingStudents(grades): answer = [] for i in grades: if i < 38 or (i % 5 < 3): score = i else: mod_num = i % 5 round_num = 5 - mod_num score = i + round_num answer.append(score) return answer 구현 문제 중 숫자 놀이를 하는 문제로 반올림의 개념을 구현하는 코드다. 어렵게 생각하지 말고 쉽게 생각하면 쉽게 풀 수 있는 문제 Grading Students | HackerRank .. 2021. 11. 9. 12:26
[python 문제 풀이] HackerRank - Diagonal Difference 문제 간단 요약 123 654 987 위와 같은 숫자들이 입력이 되었을 때 대각선 숫자들의 합을 구한 뒤 대각선끼리의 뺄셈을 절대값으로 나타내라! ex :) |(1+5+7) - (3+5+9)| = 4 풀이 내용 def diagonalDifference(arr): left = 0 right = 0 num = len(arr) for i in range(num): left = left + arr[i][i] right = right + arr[i][num-i-1] result = abs(left - right) return result 어떤 패턴을 가지고 계산을 하는지 파악을 하게 된다면 금방 풀리는 문제 알고리즘 보단 수학적인 접근이 필요한 문제 같아 보입니다. Diagonal Difference | Hack.. 2021. 11. 5. 17:57
파이썬을 활용해보자 [알고리즘 풀이 꿀팁] 1편 최근 알고리즘 공부를 하면서 파이썬의 수학 라이브러리를 자주 사용하면서 풀이를 하는 경우가 많은데 그런 경우를 제외한 파이썬의 기본적인 기능들을 활용하는 팁들을 한 번 정리 해보려고 합니다. 나누기를 정수만 받고 싶어요! 1 / 3 => 0.333333333333333333333 1 // 3 => 0 공백을 기준으로 여러 입력을 받고 싶어요! a, b, c = map(int, input().split) 리스트 형식으로 입력을 받고 싶어요! List = list(map(int, input().split())) Range함수는 0부터 N-1 입니다. range(a) => 0부터 a-1까지의 수를 크기가 a인 리스트로 반환함 range(4) => [0, 1, 2, 3] range(1, a) => 1부터 a-1.. 2021. 10. 30. 11:55
알고리즘/자료구조 - Hash Table(해쉬 테이블) 해쉬 테이블 Hash Table은 Key(키)에 Value(데이터)를 저장하는 자료 구조 파이썬에서는 { "key" : "Value" }형식으로 나타내면 된다. 검색이 많이 필요한 경우, 저장/읽기/삭제가 많을 경우, 캐쉬 구현시(중복 확인이 쉽기 때문) 해쉬 테이블을 많이 사용함 장/단점 장점 데이터의 저장과 읽는 속도가 빠름(검색속도 Fast!) 키에 대한 중복된 데이터가 존재하는지 쉽게 확인 가능 단점 저장 공간이 다른 자료구조에 비해 더 많이 필요함 여러 키에 해당하는 주소가 동일하게 된다면 충돌이 일어나기에 충돌을 해결할 자료구조가 필요함 해쉬테이블 용어 해쉬(Hash) - 임의로 설정한 값을 고정된 길이로 변환 시키는 것 해쉬 테이블(Hash Talbe) - 키 값의 연산에 의해 직접 접근이 .. 2021. 10. 24. 12:29
알고리즘/자료구조 - Quick Sort(퀵 정렬) 내가 이해한 퀵 정렬 배열을 하나의 기준점(pivot)을 두고 배열을 분할하여 분할된 배열 각각의 크기를 비교한 다음 정렬하는 것 기준점을 두고 그 기준점을 기준으로 크고 작음을 비교하는 알고리즘 아닌가 싶음 def quick_sort(arr): if len(arr) pivot: more_arr.append(num) else: same_arr.append(num) return quick_sort(less_arr) + same_arr + quick_sort(more_arr) arr = [4,6,9,8,7,5,3,2,1] print(quick_sort(arr)) #[1,2,3,4,5,6,7,8,9] 자세한 내용은 이 블로그 참조 [알고리즘] 퀵 정렬 - Quick Sort (Python, Java) Engi.. 2021. 10. 22. 12:53
알고리즘/자료구조 - Stack(스택) 스택 데이터를 제한적으로 접근할 수 있는 자료구조(한 쪽 끝에서만 자료를 넣거나 뺄 수 있는 자료 구조) 마지막에 쌓은 데이터를 먼저 빼낼 수 있는 자료구조(LIFO = Last In First Out) 스택은 LIFO(Last In First Out),FILO(First In Last Out) 데이터 관리 방식을 가지고 있다. 주요 기능으로는 데이터를 집어 넣는 push() / 데이터를 꺼내는 pop()이 존재한다. 스택의 장단점 장점 구조가 단순함 (구현이 쉬움) 데이터 읽기,저장 속도가 빠름 단점 데이터 최대 갯수를 미리 지정해줘야함(파이썬에서 재귀함수는 1000번까지 호출 가능) 저장 공간의 낭비가 발생 가능성이 있음(저장 공간을 미리 확보해야하기 때문에) 스택은 보통 배열 구조를 활용해 구현해야.. 2021. 10. 21. 08:06
알고리즘/자료구조 - 큐 Queue 큐 먼저 넣은 데이터를 먼저 가져올 수 있는 구조 FIFO(First-In First-Out), LILO(Last-In Last-out)방식으로 스택과는 정반대의 순서를 가지고 있다. Enqueue = 큐에 데이터를 집어 넣는다. Dequeue = 큐에서 데이터를 꺼낸다. 파이썬에서의 큐 파이썬은 queue라이브러리가 존재해 다양한 큐 구조를 제공한다. Queue() : 일반적인 큐 구조 LifoQueue : 나중에 입력된 데이터가 먼저 출력되는 구조 (스택 구조) PriorityQueue() : 데이터마다 우선순위를 부여해 우선순위가 높은 순으로 출력함 큐는 이렇게 작동해요 1. 일반 queue import queue nomal = queue.Queue() nomal.put("123") print(no.. 2021. 10. 19. 23:08
알고리즘/자료구조 - Array(배열) 알아보기 배열 / Array 데이터 나열과 각 데이터를 인덱스에 대응하도록 만든 데이터 구조(파이썬은 list type이 배열 제공) 배열을 쓰는 이유 같은 종류의 데이터를 보다 효율적으로 관리하기 위해 사용 같은 종류의 데이터를 순차적으로 저장하기 위해 사용 장 단점 접근이 빠르다. Insert, Delete가 어렵다. / 길이를 지정해줘야한다. 배열 구현 (파이썬) # 1차원 배열 array = [1,2,3,4,5,6] print(array) # [1,2,3,4,5,6] # 2차원 배열 2nd_array = [[1,2,3],[4,5,6],[7,8,9]] print(2nd_array) # [[1,2,3],[4,5,6],[7,8,9]] print(2nd_array[0]) # [1,2,3] print(2nd_arr.. 2021. 10. 18. 23:40
반응형

"); wcs_do();