print(print.__doc__) print(value, ..., sep=' ', end='\n', file=sys.stdout, flush=False) Prints the values to a stream, or to sys.stdout by default. Optional keyword arguments: file: a file-like object (stream); defaults to the current sys.stdout. sep: string inserted between values, default a space. end: string appended after the last value, default a newline. flush: whether to forcibly flush th..
# Definition for singly-linked list. class ListNode: def __init__(self, x): self.val = x self.next = None class Solution: def isPalindrome(self, head: ListNode) -> bool: rev = None slow = fast = head # 런너를 이용해 역순 연결 리스트 구성 while fast and fast.next: fast = fast.next.next rev, rev.next, slow = slow, rev, slow.next if fast: slow = slow.next # 팰린드롬 여부 확인 while rev and rev.val == slow.val: slow, rev ..
is는 id값을 비교하는 함수 ==은 값을 비교하는 함수
for문 1개(i) + two pointer을 사용해서 구한다.
ASCII, Unicode, UTF-8 ASCII: 글자당 1 byte Unicode: 글자당 4 byte UTF-8: 공간 낭비를 막는다. 글자당 1~4byte 사이로 필요한 byte만큼 사용한다. UTF-8이 공간 낭비를 막는 방식 UTF-8이 공간 낭비를 막는 방식에 대해서 살펴보자! 결론적으로 기억할 사실은 UTF-8은 US-ASCII와 호환성을 가졌다는 사실이다. 첫 바이트의 맨 앞 비트가 0이면 1바이트 문자, 10인 경우 특정 문자의 중간 바이트, 110인경우 2바이트, 1110인경우 3바이트, 11110인경우 4바이트 인걸로 문자 바이트의 길이를 인식할 수 있다. ASCII는 128개의 글자가 있다. 그러므로 2^7 -> 7 bit로 표현 가능하다. 1byte에 store 할 수 있는 것이..
파이썬은 원래 동적 타입 언어라서 타입이 없지만... 타입을 명시해서 혼란을 낮추는 방법이 존재한다. 그 중 Generics는 여러 타입을 허용한다. 데이터 형식에 의존하지 않고 인자, 변수 또는 반환값 등이 여러 다른 데이터 타입들을 가질 수 있는 방식을 제네릭이라고 한다. from typing import TypeVar T = TypeVar('T') U = TypeVar('U') def are_equal(a:T, b:U) -> bool: return a == b print(are_equal(10, 10.0)) # True example async def _crawl_and_reduce( self, urls: Iterable[str], parse_fn: Optional[Callable[[str], T]..
import sys sys.executable
당연히 if-else에는 영향을 미치지 않는다. for, while만 탈출!
파이썬에는 원래 struct가 없다... namedtuple이라는 라이브러리를 사용해서 구현할 수 있었다. from collections import namedtuple MyStruct = namedtuple("MyStruct", "a b c") m = MyStruct("a", "b", "c") ====파이썬 3.7이상이면 dataclass를 사용할 수 있다. 파이썬의 decoration(자바의 annotation같은거) 를 쓰면 된다. from dataclasses import dataclass @dataclass class Product: weight:int = None price:int = None apple = Product() apple.weight = 10
Chapter 9의 내용이다! automaton의 4가지 부류 Finite-state machine : 간단~ Pushdown automata Linear-bounded automata Turing machine: 복잡~ finite state machine인데 inverse가 true 아니다. 그 중 Turing Machine은 최고 등급의 automaton라고 볼 수 있다. 이 챕터를 배우기 위해서 그동안 오토마타를 배워왔다고 해도 과언이 아닐 만큼... https://namu.wiki/w/튜링%20머신 https://namu.wiki/w/오토마타 꽤 재미있으니까 위 나무위키 문서를 읽어보길 바란다 :) Turing Machine의 정의 Turing Machine M은, M = (Q, Σ, Γ, 𝛿,..
Chapter 8의 내용이다! CFG의 특성에 대해서는 이미 정의할 때 한번 다뤘는데 왜 또 얘기하지? 싶었는데 Pumping Lemma를 다루기 위한 것이였던 것 같다! Theorem 8.3, 8.4 CFL은 union, concatenation, star-closure에 닫혀 있다. intersection과 complementation에는 닫혀 있지가 않다. Theorem 8.5 L1이 context free language이고 L2이 regular language라면 L1 교집합 L2는 context free이다. Theorem 8.6 Context-free grammar G=(V, T, S, P)에 대하여, L(G)가 비어있는지 아닌지를 결정하는 알고리즘이 있다. Theorem 8.7 Contex..
Chapter 7의 내용이다! 일단 Pushdown Automata와 그 전의 automata와 가장 크게 다른 점은 pushdown automata는 스택을 사용할 수 있다는 것이다! Nondeterministic Pushdown Automata Pushdown Automata의 정의 M = (Q, Σ, Γ, 𝛿, q_0, z, F) * Γ 은 감마라고 부른다. 잘 보면 기존에 배웠던 finite automata에서 2가지의 원소가 추가되었다. 바로 Γ 와 z이다. Q: control unit의 initernal state의 유한 집합Σ: input alphabet Γ: 유한한 개수의 집합인 stack alphabet 𝛿: Q X ( Σ sum {ƛ}) X Γ : transifion function이 ..
RAM하면 일반적으로 SRAM, DRAM을 생각하고 volatile memory라고 생각한다. SRAM => cache - I-Cache(Instruction Cache) - D-Cache(Data Memory Cache) DRAM => Memory SSD HDD( Magnetic Disk ) 순으로 있다! 그러나 차세대 메모리들은 non-volatile하게 나온다. (NVM, Non-volatile memory) 자주 등장하는 키워드들은 MRAM, FRAM이다. 모두 비휘발성이지만 플래시 메모리(ex: SSD) - NAND 와 NOR flash를 사용해서 데이터를 저장함. 자기 저장소(ex. HDD) - magnetic disk에 저장한다.
friend함수는, 클래스의 멤버함수가 아닌 다른 외부 함수에게 클래스의 모든 멤버를 접근할 수 있는 권한을 부여한다. 클래스의 멤버로 선언하기에는 무리가 있고, 클래스의 모든 멤버를 자유롭게 접근할 수 있는 함수를 작성할 때 쓰면 좋다. 프렌드 유형에는 3가지가 있다. 1) 전역 함수 예: // 외부 함수 equals() 가져오기 class Rect { ... friend bool equals(Rect r, Rect s); }; 2) 다른 클래스의 멤버 함수 예: // RectManager 클래스의 equals() 가져오기 class Rect { ... friend bool RectManager::equals(Rect r, Rect s); }; 3) 다른 클래스 전체 // RectManager 클래스의..
Chapter2에 나오는 이야기이다! 2.1 Zuse’s Plankalkül 2.2 Pseudocodes 2.3 The IBM 704 and Fortran 2.4 Functional Programming: Lisp 2.5 The First Step Toward Sophistication: ALGOL 60 2.6 Computerizing Business Records: COBOL 2.7 The Beginnings of Timesharing: Basic 2.8 Everything for Everybody: PL/I 2.9 Two Early Dynamic Languages: APL and SNOBOL 2.10 The Beginnings of Data Abstraction: SIMULA 67 2.11 Ortho..
엄청 큰 행렬 문제를 푼다고 생각해보자... 예를 들면 그래픽스에서 Global Illumination을 구할 때. 조명이 하나인데 얘가 다른 물체에 반사되고, 또 그 물체에서 반사된 빛이 다른 물체에 반사되고... 무한 반복일 때 현존하는 방법으로 계산하면 정말 오래걸릴것이다. 실시간 렌더링이 중요할 때는 맞지 않다.. 그래서 두가지의 방법을 이야기하려고 한다 1. Jacobi Method 2. Gauss-Seidal Method
Ch7의 내용이다!
Chapter6의 내용이다! 앞서 배운 문맥자유문법 같은 경우, 우변에 오는 형태에 어떠한 제약도 없었다. 그런데 이게 항상 좋기만 한것도 아니다.. 따라서 이번 챕터에서는 문법을 단순하게 만드는 방법에 대해서 다뤄보려고 한다. 하지만 단순화 한다고 해서 무조건! 개수가 줄어야 하는 것이 아니라는걸 염두에 두자. 유용한 치환 규칙 어렵지 않은 규칙이다. A->aB B->c라면 A->ac로 바꿀 수 있다는 규칙이다. 증명은 생략하겠다. 필요없는 production 삭제하기 먼저 변수가 필요없다와 필요 있다를 구분하는 방법을 알아야 하는데, (Definition 6.1) 필요 있다 : L(G)에 포함되는 w에 대하여, S->xAy->w 으로 만들어질 수 있는 x, y가 (V set T)* 에 대하여 w가 하..
* coroutine을 'symmetric control' 이라고도 부른다. 호출하는 애랑 호출당하는 애랑 equal basis라고 생각하기 때문이다. 코루틴(coroutine)은 cooperative routine를 의미하는데 서로 협력하는 루틴이라는 뜻입니다. 즉, 메인 루틴과 서브 루틴처럼 종속된 관계가 아니라 서로 대등한 관계이며 특정 시점에 상대방의 코드를 실행합니다. 이처럼 코루틴은 함수가 종료되지 않은 상태에서 메인 루틴의 코드를 실행한 뒤 다시 돌아와서 코루틴의 코드를 실행합니다. 따라서 코루틴이 종료되지 않았으므로 코루틴의 내용도 계속 유지됩니다. 일반 함수를 호출하면 코드를 한 번만 실행할 수 있지만, 코루틴은 코드를 여러 번 실행할 수 있습니다. 참고로 함수의 코드를 실행하는 지점을 ..
# Program to check the list contains elements of another list # List1 List1 = ['python' , 'javascript', 'csharp', 'go', 'c', 'c++'] # List2 List2 = ['swift' , 'php', 'python'] check = any(item in List1 for item in List2) if check is True: print("The list {} contains some elements of the list {}".format(List1, List2)) else : print("No, List1 doesn't have any elements of the List2.") [출처] https://..
이 글은 크게 regex에 대한 요약과 Python에서 regex를 쓰는 부분 두개로 나누어놨다. regex에 관련된 유용한 사이트도 글의 마지막 부분에서 소개하려고 한다. 1. Regex 정리 이 부분은 완전 기본이라서 빠르게 정리하고 넘어가려고 한다. []:문자 클래스. 그룹보다 얘를 쓰는게 좋다! ex) [0-9][a-z][A-Z][가-힣][abc] ^을 쓰면 반대 의미가 된다. ex) [^a-z] [\d]: 숫자 [\D]: 숫자 외 모든것 \.: 줄바꿈 문자 제외 어떤 글자 \ : 특수 문자가 아닌 어떤 문자 \w: 알파벳과 숫자 \W: 그외 [\s]. :공백 \S: 공백 외 개수를 지정해보자 . : 1번(\n 제외) ? : 0번 혹은 1번 * : 0번 이상 + : 1번 이상 {n} : n번 반복..
https://yechoi.tistory.com/52