반응형

전체 글 238

Django REST API 서버 만들기

Restful API 란? Representational State Transfer의 약자 Rest로 소프트웨어 프로그램 아키텍처의 한 형식을 의미합니다. 자원을 이름으로 구분하여 자원의 상태(정보)를 주고 받는 모든 것을 의미합니다. HTTP 프로토콜을 활용하기 때문에 웹의 장점을 최대한 활용할 수 있는 아키텍처 입니다. REST 구성 1. 자원 (Resource) - URL - HTTP url을 활용한 고유한 ID로 구분합니다. 2. 행위 (Verb) - HTTP Method - HTTP 프로토콜의 GET, POST, PUT, DELETE 3. 표현 (Representations) - Client가 자원의 정보에 대한 조작을 요청하면 Server는 이에 대응하는 Representation을 보냅니다...

github issue solve

"please use a personal access token instead." 로컬에서 코딩을 한참 하다가 내 깃헙 레포에 연결하려고 하니 실패.. 아래와 같은 오류가 발생했습니다. 확인해보니 password가 아닌 personal access token을 사용하라고 하는데 최근에는 개인 github은 거의 사용을 안하고 회사에서 bitbucket만을 사용하다 보니.. 당황해서 비밀번호 바꿔보고 하다가 해당 글을 참조해서 token 발급 받은 뒤 문제 해결. "error: RPC failed; curl 92 HTTP/2 stream 0 was not closed cleanly: CANCEL (err 8)" 그리고 나서 작업한 코드를 push 하려다가 또 아래와 같은 오류 발생 ㅠ stackoverfl..

[카카오] 2020 신입 개발자 블라인드 채용 1차 코딩 - 가사 검색

정확성과 효율성 테스트를 모두 통과해야 합니다. 정확성 테스트는 쉽게 통과할 수 있지만 효율성은 끝내 통과하지 못하고 다른 코드들을 참조했습니다. 결론적으로 Trie 자료 구조에 대해서 알고 있어야 수월하게 풀이가 가능한 문제입니다. Trie 자료 구조에 대해선 따로 정리하도록 하겠습니다. 아래 코드는 유튜브 풀이를 참조한 코드 입니다. 설명을 차근차근 해주셔서 참조하시면 많은 도움이 될 듯 합니다. class Trie: def __init__(self): self.node = dict() self.count = 0 def insert(self, char): curr = self for s in char: curr.count += 1 if s not in curr.node: curr.node[s] = T..

카테고리 없음 2021.08.30

[카카오] 2020 신입 개발자 블라인드 채용 1차 코딩 - 괄호 변환

올바른 괄호 / 균형잡힌 괄호 2가지를 체크하는 함수를 각각 구현한 뒤 문제에서 설명하는 변환 과정 1 ~ 4를 구현 하면 됩니다. 이때 재귀 부분만 신경쓰면 큰 어려움은 없을 듯 합니다. def isbalanced(s): flag = 0 for c in s: if c == '(': flag += 1 elif c == ')': flag -= 1 if flag == 0: return True else: return False def iscorrect(s): stack = [] for c in s: if len(stack) == 0: stack.append(c) else: if c == '(': stack.append(c) elif c == ')': if len(stack) == 0 or stack.pop(..

[카카오] 2020 신입 개발자 블라인드 채용 1차 코딩 - 문자열 압축

그냥 무식하게 1개 단위 ~ n-1개 단위 압축 경우의 수를 모두 계산하고 그 중 가장 작은 값은 반환하는 방법으로 해결했습니다. 좀 더 깔끔하게 해결한 코드가 있으면 정리해서 업데이트 하겠습니다.. import math def solution(s): if len(s) == 1: return 1 elif len(set([c for c in s])) == 1: count = len(s) return len(str(count)) + 1 else: answer = len(s) for i in range(1, len(s)): idx = i length = 0 prev = s[:i] count = 1 for j in range(math.ceil(len(s) / i) - 1): curr = s[idx:idx+i] ..

[python] pass, continue, break 활용법

안녕하세요, 오늘은 정말 간단한 python에서 pass, continue, break 문법 각각의 역할과 활용법에 대해서 정리해보겠습니다. 쉽게 정리하자면, pass : 아무 동작도 하지 않습니다. 반복문에서 아무런 영향을 끼치지 않습니다. continue : 반복문에서 다음 loop로 건너뛰면서 loop는 지속됩니다. break : 반복문을 멈추고 loop 밖으로 나갑니다. 말로 설명하는 것보다 쉽게 이해할 수 있도록 아래 예시로 정리하겠습니다. pass는 왼쪽의 결과에서 볼 수 있듯이 코드에 아무런 영향을 끼치지 않습니다. 따라서 pass는 주로 조건문에서 별다른 행동이 필요하지 않을 때, 또는 class 생성시 초기에 별다른 값이 없을때 전체 코드 동작을 확인하기 위해 임시적으로 활용하기도 합니다..

[연결 리스트] 두 수의 덧셈

* leetcode 2. Add Two Numbers Q. 역순으로 저장된 연결 리스트의 숫자를 더하라 # 입력 (2 -> 4 -> 3) + (5 -> 6 -> 4) # 출력 7 -> 0 -> 8 # 설명 342 + 465 = 807 풀이. 전가산기 구현 def addTwoNumbers(self, l1: ListNode, l2: ListNode) -> ListNode: root = head = ListNode(0) carry = 0 while l1 or l2 or carry: sum = 0 # 두 입력값의 합 계산 if l1: sum += l1.val l1 = l1.next if l2: sum += l2.val l2 = l2.next # 몫(올림)과 나머지(값) 계산 carry, val = divmod(..

Linux Two-Factor Authentication 적용하기

Two-factor authentication (2FA)는 Multi-factor authentication의 한 종류로 서버 접속을 위해서 기존에 사용하던 password 이외에 추가적인 OTP 또는 verification code를 요구하여 서버 보안을 더욱 강화하는 방법입니다. 5분만에! 간단하게 설정하는 방법에 대해서 알아보도록 하겠습니다. Step 1 - Google PAM 모듈 설치 일단, 서버에 Google PAM 모듈을 설치해야합니다. 이 모듈은 사용자가 TOTP를 사용하여 Linux 시스템에서 인증할 수 있게 해줍니다. # 먼저 Ubuntu repositories를 업데이트하고, $ sudo apt-get update # google pam을 설치합니다. $ sudo apt-get ins..

프로그래밍 2021.02.15

[연결 리스트] 역순 연결 리스트

* leetcode 206. Reverse Linked List Q. 연결 리스트를 뒤집어라. # 입력 1->2->3->4->5->Null # 출력 5->4->3->2->1->Null 풀이 1. 반복 구조로 뒤집기 def reverseList(head: ListNode) -> ListNode: node, prev = head, None # node.next를 이전 prev 리스트로 계속 연결하면 뒤집어진 연결 리스트를 얻을 수 있다. while node: next, node.next = node.next, prev prev, node = node, next return prev ### 초기화 node = 1->2->3->4->5->None prev = None while [1] next = 2(->3->..

반응형