itertools.premutation(iterable, r) 입력 terable에서 요소의 연속된 길이 r 순열을 반환합니다. r이 지정되지 않았거나 None이면, r의 기본값은 iterable의 길이이며 가능한 모든 최대 길이 순열이 생성됩니다. 순열(permutation) 튜플은 입력 iterable의 순서에 따라 사전식 순서로 방출됩니다. 따라서, 입력 iterable이 정렬되어 있으면, 순열 튜플이 정렬된 순서로 생성됩니다. 요소는 값이 아니라 위치로 고유성을 다룹니다. 따라서 입력 요소가 고유하면, 각 순열에 반복 값이 없습니다. # permutations('ABCD', 2) --> AB AC AD BA BC BD CA CB CD DA DB DC # permutations(range(3)) -..
시간 제한을 못보고 문제 설명만 읽고 단순하게 풀었을 때 로직은 이런식으로 구성했다. 첫날에 나무를 오르고 목표 높이보다 작을경우 하루를 세고 B만큼 미끄러지고... 문제에서 목표 높이에 도달하는 순간 종료를 하기 때문에 Temp가 V와 같아지거나 목표 높이보다 커질 때 탈출하게 작성했지만 시간 초과가 떳다(PyPy3도 마찬가지로) 저 내용을 수식으로 정리를 하게되면 A + (A- B)*(Day) >= V 가 되고 문제에서 알고 싶어하는 것이 Day니까 (Day) >= (V - A) / (A - B) 가 된다. 이 경우에서 Day가 3.4 2.3 이런식으로 나누어 지는 경우에는 하루 더 올라가야 한다. (즉 나눴을 때, 나머지가 있을 경우) 맨 처음 문제 설명만 읽고 단순하게 풀면 기본 예제 수준의 문제..
문제에 대한 출력을 이해하는데 시간이 오래 걸렸던 문제이다. 입력에 대해서 맨 첫줄에 크기를 입력 받고 리스트에 n만큼의 수를 입력 받은 후에 Stack의 push, pop을 이용하여 리스트와 동일하게 만들 수 있는가 없는가 물어보는 문제이다. 우선 1부터 n까지 차례대로 입력 받는 Stack1이 존재한다. (입력 1의 일부만 설명) 8(+) 7(-) 4(+) 6(+) 7(+) 8(-) 3(+) 5(+) 6(-) 5 6 2(+) 3(-) 2 3 2 3 1(+) 4(-) 1 4 1 4 Stack1 Stack2 Stack1 Stack2 Stack1 Stack2 Stack1 에서 Pop을해서 다른 Stack2에 담아두었다고 생각하면 된다. 최종적으로 Stack2에 있는 값과 n만큼의 수를 입력 받은 리스트가 ..
스택(Stack) LIFO (Last In First Out) : 마지막에 들어간 것이 첫번째로 나오는 구조 Stack에 데이터를 넣고 뺄 때 항상 top에 있는 것이 먼저 나옴 자료가 없을 때 pop -> stack underflow, 크기 이상의 자료를 push -> stack overflow 데이터의 삽입과 삭제가 빠르며 (O(1)), 괄호 검사, 역순 문자열 만들기, 후위 표기법으로의 변환 문제에 사용한다. 큐(Queue) FIFO(First In First Out) : 맨 처음 들어간 것이 첫번째로 나오는 구조 선형 큐의 경우 Front와 Back을 둘 다 이동하면서 삽입, 삭제를 할 경우 배열의 끝에 저장되어 있는 상황이 되면 Back을 더 이상 이동시킬 수 없어서 overflow가 발생한다 ..
문제를 보고나서 노트에 잠깐 써보고 바로 풀어봤다... 해당 리스트를 1차원 리스트로 바꾼 후, sort() 나 reverse() 를 이용하여 len() - N or N - 1 번 째 출력하면 된다고 생각했다... 결론은 메모리 초과 2중 포문 때문에 그런 것 같다.. 파이썬 heapq를 이용하여 풀었다.. 행마다 N개를 최소 힙에 push ,pop을 반복하면서 힙에 N개를 유지하면 결국 top에 N 번째로 큰 수가 나온다. 문제에 맞는 풀이방식을 빠르게 적용 하고, 코드 구현이 막히지 않도록 문제를 많이 풀어봐야 겠다..
풀어본 문제는 Baekjoon 의 1920번 이다. 처음에 풀었던 방식은 단순하게 N[0] 하고 M[0 - 4] 를 비교 N의 리스트의 값을 1개 씩 증가해가며 있으면 1 출력 없으면 0 출력 이런 식으로 풀었는데 시간 초과가 발생하였다... 그래서 값을 비교할 때 사용하는 알고리즘 중에 시간 복잡도 O(logn)인 이진 탐색 알고리즘을 사용하여 푼 문제이다. 이진 탐색은 정렬되어 있는 리스트에서 값을 비교할 때마다 찾는 값의 범위가 중간 값보다 작으면 왼쪽 크면 오른쪽을 대상으로 하여 찾는 알고리즘 이다.
안드로이드를 공부하고, 코틀린으로 앱 개발을 하다 보니 Activity와 Fragment의 차이점이 무엇인지 궁금해져서 찾아보았다. Android Developers에서 정의하는 Activity에 대한 설명이다. 안드로이드 프레임워크가 제공하는 Activity는 사용자가 앱에 접근할 수 있도록 하며, 다양한 활동(작업)을 할 수 있도록 하는 일종의 페이지입니다. Activity는 화면의 기초가 되는 바닥이며, 그 위에 올라가는 것이 View 이다. 그래서 Activity가 존재해야 View가 존재할 수 있다고 한다. Fragment는 Activity와 View의 특성을 동시에 가지고 있지만 View와 마찬가지로 Activity가 있어야 존재할 수 있다. View Fragment Activity Activ..
GET GET은 지정된 리소스에서 데이터를 요청하는 데 사용됩니다. 가장 일반적인 HTTP method중 하나이다. 쿼리 문자열 (이름 / 값 쌍)은 GET 요청의 URL로 전송됩니다. /test/demo_form.php?name1=value1&name2=value2 GET 요청을 캐시 할 수 있습니다. GET 요청은 브라우저 기록에 남아 있습니다. GET 요청을 북마크 할 수 있습니다. 민감한 데이터를 처리 할 때 GET 요청을 사용해서는 안됩니다. (GET parameter에 다 노출 되기 때문에) GET 요청에는 길이 제한이 있습니다. GET 요청은 데이터를 요청하는 데만 사용됩니다 (수정하지 않음). POST POST는 리소스를 생성 / 업데이트하기 위해 서버로 데이터를 보내는 데 사용됩니다. G..
