Algorithm

    Kotlin Data Structure

    Kotlin Data Structure

    배열과 리스트의 차이 [참고] Arrays var contacts = arrayOf("John", "James", "Amy") List & MutableList (참고) List : Read Only MutableList : Read and Write val mulist1: MutableList = mutableListOf(10, 20, 11, 23, 55) val mulist2 = mutableListOf(10, 20, 30); val mulist3 = (1..50).toMutableList() val mulist4 = mutableListOf() val mulist5 = MutableList(5, { i -> i}) val mulist: MutableList = mutableListOf(10, 20,..

    emptyList()

    emptyList()

    비어있는 리스트 표현 [보러가기] Returns an empty read-only list. The returned list is serializable (JVM). val list = listOf() println("list.isEmpty() is ${list.isEmpty()}") // true // another way to create an empty list, // type parameter is inferred from the expected type val other: List = emptyList() // Empty lists are equal println("list == other is ${list == other}") // true println(list) // [] println(o..

    [프로그래머스] 수식 최대화

    [프로그래머스] 수식 최대화

    문자열 식이 주어진다. 해당 문자열 식에서 연산의 우선순위를 변경했을 때, 절대값이 가장 큰 경우 그 값을 반환하는 알고리즘이다. 이 문제는 문자열을 원하는 형태로 나누고, 연산의 우선순위를 변경하여 각 값을 계산해본다. 이 값들 중 절대값이 가장 큰 값을 리턴하는 것인데, 이러한 반복 작업과 문자열을 필터링하는 것이 관건이다. itertools라이브러리, permutations 을 활용해야 한다. permutations는 순열 . combinations는 조합이다. 순열은 중복을 허용하지 않는다. (AB != BA) 정규식을 통해서 문자열을 구분하는 것도 원할하게 쓸줄 알아야한다. ( 풀었음에도 몇 달 지나니 아예 또 못푸는 현상 반복...) re.split() 함수 re.split('정규식', 문자열..

    Dict(Dict())  표현

    Dict(Dict()) 표현

    딕셔너리 참고 사이트 fares = [[4, 1, 10], [3, 5, 24], [5, 6, 2], [3, 1, 41], [ 5, 1, 24], [4, 6, 50], [2, 4, 66], [2, 3, 22], [1, 6, 25]] def solution(fares): total = 0 matrix = {i+1: dict() for i in range(n)} for i, j, k in fares: matrix[i].update({j: k}) matrix[j].update({i: k}) print(matrix) print(*matrix.items(), sep='\n') return total solution(n, s, a, b, fares) >>> {1: {4: 10, 3: 41, 5: 24, 6: 25},..

    Undirected Graph Adjacency List, Matrix:: 무 방향 그래프, 인접 목록, 행렬

    Undirected Graph Adjacency List, Matrix:: 무 방향 그래프, 인접 목록, 행렬

    이 게시물은 개인적으로 알고리즘 공부한 내용과 이곳 저곳 검색하여 얻은 정보, 잡지식을 꾸준히 쌓아가는 글입니다. 출처는 최하단에 남겨두겠습니다. 자료나 궁금한점은 댓글로 질문해주세요.^^ 무방향 그래프를 나타내는 두 가지 방법이 있다. ( 방향이 없는 그래프 ) 인접 행렬 인접 목록 1. 인접 행렬 Adjacency Matrix 그래프 이론에서 어느 꼭짓점들이 변으로 연결되어있는지 나타내는 ㅎㅎㅎㅎ정사각형 행렬(노드의 갯수 x 노드의 갯수)입니다. 연결 행렬이라고도 합니다. 그래프에서 방향이 지정되지 않은 경우 인접 행렬은 대칭이다. 1과 0으로 노드들의 연결 관계를 표현한다. ( True 와 False로 표현하기도 한다.) 즉, 인접 행렬에서 간선인 경우 matrix(i, j) = 1이고 선이 없다면..

    합집합, 교집합, 차집합, 대칭 차집합 표현하기

    합집합, 교집합, 차집합, 대칭 차집합 표현하기

    파이썬에서 집합의 관계가 직관적이게 표현이 가능하다. Set()을 통해서 구현해야 한다. listA = set([1, 2, 3]) listB = set([2, 3, 4]) tupleA = set((1, 2, 3)) tupleB = set((2, 3, 4)) setA = {1, 2, 3} setB = {2, 3, 4} print(f'list:{listA | listB}, tuple: {tupleA | tupleB}, set: {setA | setB}') print(f'list:{listA & listB}, tuple: {tupleA & tupleB}, set: {setA & setB}') print(f'list:{listA - listB}, tuple: {tupleA - tupleB}, set: {setA..

    불량사용자 - 카카오 코딩테스트

    불량사용자 - 카카오 코딩테스트

    불량사용자 2019 카카오 개발자 겨울 인턴십 Level 3 응모자가 아래와 같이 있고, 불량으로 응모한 아이디가 있다. 이를 걸르기 위해 불량아이디인 경우를 모두 뽑아내라. 응모자 아이디 불량 사용자 frodo fr*d* fradi abc1** crodo abc123 frodoc 제재 아이디 경우1 제재 아이디 경우2 frodo fradi abc123 abc123 Retrun 값은 2가 된다. 입력은 배열의 형태로 주어진다. ["frodo", "fradi", "crodo", "abc123", "frodoc"] ["fr*d*", "abc1**"] Permutations를 사용하여 푼다. 1. 사용자 아이디의 조합을 불량 사용자 인원의 수 만큼 조합을 만들어낸다. 2. 이러한 조합에서 각 조합을 check..

    Binary Search 이진 탐색  이분 탐색

    Binary Search 이진 탐색 이분 탐색

    ✊✋ Binary Search ✋✊ 이진탐색, 이분탐색 0, 1, 0, 1??? 처음 이 알고리즘을 알았을 때는 0 과 1의 알고리즘인 줄 알았다. 그러나 그러한 개념보다는 이진 탐색은 탐색시간을 단축시키기 위한 알고리즘으로 기억하는게 옳다. 반드시 정렬을 하여 사용하는데, 개인적으로 사용을 하면서 느낀점과 기억해야 할 것을 기록하려 한다. 탐색할 자료를 둘로 나누어 해당 데이터가 있을 만한 곳을 탐색하는 방법이다. 순차 탐색에 비해서는 굉장히 효율적이고 빨라보이지만, 반드시 정렬이 되어있어햐 하며, 경우에 따라서는 쓰기 곤란한 경우가 있다. 이진 탐색의 계산복잡도는 O(logn) 순차 탐색이 O(n)이다. - 연결리스트의 경우 이러한 이진 탐색은 불가능 하다. (물론 구현은 가능하다. 번거로울 뿐) 기..