본문 바로가기

전체 글

(19)
Delegate 패턴과 DI / Protocol Delegate 패턴은 작은 프로젝트라도 만들어본 사람이라면 무조건! 썼을 디자인 패턴이다.DI또한 의존성 주입이라는 이름으로 많이 들어봤을 터이다. 그리고 이 두 개념에 대해서 공부해보면 Protocol이 굉장히 많이 언급된다. 셋 다 개념이 추상적인 느낌이기도 하고 특히 DI는 개인적으로 크게 와닿기까지 시간이 오래 걸렸다… Delegate 패턴과 DI, 그리고 Protocol과의 연관성을 뿌셔보쟈아아아찾아봤던 내용과 개인적으로 헷갈렸던 내용들을 정리해보겠다.(DI에서 자꾸 위임이라는 단어를 사용하길래 Delegate패턴과 뭔 연관성이 있나? 싶었던 사람인데 혹시나 나같은 사람이 있을까봐,,한번에 정리^^) 🍕 Delegate Pattern디자인 패턴의 일종으로 그 중에서도 행위 디자인 패턴..
웹앱에서 주의해야 할 애플 리젝 사유 + 리젝 사유 반영하기.. 웹으로 구현된 서비스를 웹앱으로 구현할 때 어떤 부분을 고려해야 애플 리젝을 받지 않을까? 애플 리젝 사유중 흔하게 알려져 있는 것은 사용자가 앱의 카메라 또는 갤러리 권한 없이 진입하려고 할 때허용 권한을 물어보지 않고 바로 진입한 경우이다. 그냥 webview로 감싸서 출시하면 되는거 아니야? 고려할 게 있나? 하겠지만생각해보면 웹뷰를 통해 카메라나 갤러리를 여는 경우 권한을 묻는 alert없이 바로 접근하는 것을 알 수 있다. 🍕 JavaScript interfaceJavaScript Interface는 네이티브 앱 개발만 했다면 잘 들어보지 않았을 것이다.단순히 말해서 웹에서 action과 함께 전달하고 싶은 값을 앱단에 전달 할 수 있는 장치이다.그렇게 되면 앱에서는(iOS기준) WKWeb..
[재귀] DFS, BFS를 위한 재귀 연습문제 (파이썬) 15649 ~ 15666번을 풀어보았다.재귀를 공부하고 다시 한 번 이해하는 데 많은 도움이 됐다.솔직히 막힌적도 너무 많고 도저히 모르겠으면 다른 블로그를 참조한 적도 많다;;; 그저 반성..일단 기본이 되는 코드들만 올려놓겠다. (다른 문제를 푸는게 근간이 되는 문제들?)  15649 / N과 M(1)n, m = map(int, input().split())numbers = []def dfs(): if len(numbers) == m: print(' '.join(map(str, numbers))) return for i in range(1, n+1): if i not in numbers: numbers.append(i) ..
[정렬 및 탐색] 백준 2785 (파이썬) 문제가 뭔소린지 처음에 모를 수도 있지만 계속 읽다보면 이해가 간다. 결국 각자 갯수가 다르게 연결된 여러가지 체인들중에서 하나의 체인을 전부 해체해 다른 체인들을 연결하면서 최소한으로 연결을 하는 것이다. 즉, 예를 들어 3, 4, 5, 7, 9 의 체인이 주어졌을 때 - 3인 체인을 해체해 그 3개의 고리를 만들어 4, 5, 7, 9를 연결해준다면? 고리 3개만 필요할 것이다.- 하지만 그렇게 하지않고 3, 4, 5, 7, 9를 정직하게 연결해준다면 고리 4개가 필요할 것이다. 필요한 고리의 최소 개수를 출력한다는 것은 이렇게 체인 하나를 모두 해체해서 남은 체인들의 고리가 되어줬을 때 성립할 수 있다.   내 풀이1) 먼저 입력받은 체인들을 sort해서 오름차순으로 만들어 준다.- 작은 것부터 해체..
[정렬 및 탐색] 백준 7795 (파이썬) 이전에 풀 때는 PyPy3이라서 속도가 빨라서 그런지 성공했었는데Python3로 언어를 설정해서 돌리면 '시관초과'가 난다. 이전의 풀이는 아래와 같은데 시간초과가 날 것을 생각해서1) aArray와 bArray를 순차탐색 하기 전에 sort함수로 올림차순해주고2) aArray의 요소가 bArray의 요소보다 크다면 바로 break로 2중 for문을 탈출하면시간초과가 나지 않을 거라고 생각했다.import systestCase = int(input())aArray = []bArray = []for _ in range(testCase): cnt = 0 aLen, bLen = map(int, input().split()) aArray = list(map(int, sys.stdin.readli..
[구현] 백준 16926 (python) 참고)deque에 대한 설명 / list와의 차이점 / 시간복잡도에 대한 설명https://wikidocs.net/104977 008 앞뒤에서 자료를 넣고 빼려면? ― collections.dequedeque는 앞과 뒤에서 데이터를 처리할 수 있는 양방향 자료형으로, 스택(stack)처럼 써도 되고 큐(queue)처럼 써도 된다. collections.deque 모듈은 de…wikidocs.net    https://www.acmicpc.net/problem/16926 몇 달 전에는 분명 실버 문제였는데 지금보니까 골드로 신분상승을..?(왜지 아니 근데 어렵긴 해서 골드인정) 이 문제는 2차원배열의 겉의 배열만 따와서 회전시키고 그 안에 겹을 또 따와서 회전시키고...이런 문제였다.정말 복잡했고 일단 들..
[구현] 백준 16505 (python) 몇 달 전에 풀었을 때는 못 풀었는데 오늘은 이상하게 풀렸다;전에는 너무 어렵게 생각했던 것 같고 이번에는 전에 어디선가 이런비슷한 논리의? 문제를 풀었던 것 같아서 재귀함수 돌면서 배열에 추가해주면 된다고 생각했다.(다행히 맞았음^^)  1) stars = [['*']]로 먼저 2차원 배열이 있다고 하자 2) 함수는 하나 만드는데 받아온 2차원 배열을 가지고 가공해서 오른쪽과 아래에 똑같은 배열을 붙인다(?라고 해야하나..)- [['*']]를 받아왔다면 -> [['*', '*'], ['*']]- [['*', '*'], ['*']] 를 받아왔다면 -> [['*', '*', '*', '*'], ['*', ' ', '*', ' '], ['*', '*'], ['*']]=>재귀함수! 3) 위의 함수를 재귀함수로..
[구현] 백준 2503 (python) 처음에 도대체 이 문제를 어떻게 푸는건지 감도 안 오고 막막했는데계속 고민하다가 알아보니까 반복문만 있으면 되는 거였다. 어쩐지 세 자리로만 제한을 두어서 반복문을 써도 되는 거였고, 시간초과가 날 일도 없었다. 심지어 서로 다른 숫자 세 개로 구성되어있다는 제한 또한 더 쉽게 코드를 짤 수 있도록 해주는 제한이었다.(같은 숫자도 가능했으면 스트라이크랑 볼을 세는데 꽤 애매했을 듯 하다) '민혁이가 영수에게 몇 번이나 질문을 했는지를 나타내는 1 이상 100 이하의 자연수 N'이라는 제한설정을 역시 보면 역시 아무리 케이스를 많이 줘도 시간초과가 날 일이 없음을 의미한다.   그래도 시간 좀 덜 걸리라고 import sys 작성했다. 1) 먼저 1000길이의 True 배열을 만들고, 가능성이 없는 숫자인..