decimal.getcontext().prec = 50 decimal.getcontext().rounding = decimal.ROUND_HALF_UP if value decimal.Decimal(-1e-9): pi = Decimal('3.14159265358979323846264338327950288419716939937510') def sin(x): x = x % (2 * pi) getcontext().prec += 2 i, lasts, s, fact, num, sign = 1, 0, x, 1, x, 1 while s != lasts: lasts = s i += 2 fact *= i * (i - 1) num *= x * x sign *=..
m_bin = int(input(), 2) print(oct(m_bin)[2:])
https://gmnam.tistory.com/226
1. namespace란? 여러명이 서로 나누어 프로젝트를 개발하는 경우 오픈소스 여러개를 합치는 경우 이름이 충돌 나는 경우를 많이 겪어봤을 것이다. 그래서 생긴것이 namespace! namespace SweetDev { } namespace 안에서 생성된 변수, 함수는 그곳에서만 사용된다. 2. std란? C++표준에서 정의한 namespace중에 한 가지이다. cout, cin, endl등 자주 쓰는 함수들이 들어있다. std::cout을 매번 쓰는게 귀찮다면 using 명령어를 사용해서 해결할 수 있다. using std:: cout; using namespace std; 둘중에 하나로...
![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/wGNEF/btrjAfrGU4F/SSSQVObvnwYSp7JSzfdwzK/img.jpg)
과제라서 하게 되었다.... 내가 만들어야 하는건 사칙연산과 괄호, 정수를 지원하는 lexical analyzer였다. 그림에서 보이다싶이 lexical analyzer는 입력받은 코드를, syntax analyzer ( parser)에게 lexical unit으로 쪼개서 전달해야 한다. 그리고 symbol table을 만들어야 한다. 물론 모든 문법을 지원하면 좋겠지만 내가 만든 Lexical analyzer에서 지원해야 문법은 다음과 같았다. → → | → → → | ε → → | ε → | | → any decimal numbers → any names conforming to C identifier rules → := → ; → + | - → * | / → ( → ) 예를 들어 보자! operan..
chapter 4의 내용이다! 정규 언어의 Closure 정규 언어에 대한 주요한 질문들 비정규 언어 판별하기 - pigeonhole principle(비둘기집 원리) 예시로 살펴보자! L = {a^n b^n: n>=0} 이면 L은 정규언어일까? (예제 4.6) 여기에 해당하는 언어는 L = { ƛ, ab, aabb, ... } 등이 있을 것이다. 이 문제를 귀류법으로 접근하면, L이 regular language라면 DFA M = {Q, {a,b}, 𝛿, q_0, F}가 존재할 것이다. i=1,2,3..일 때 𝛿*(q_0, a^i)를 생각하면 i는 무한대로 많을 것인데 M에는 state개수가 유한하다. 그렇다면, 𝛿*(q_0, a^n) = q 𝛿*(q_0, a^m) = q인 서로 다른 n, m이 존재하..
![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/seTuU/btriaVUDkKQ/oYaylxVLPHR9zIxM1i5pQ0/img.png)
이번에는 chapter 3의 내용을 다루려고 한다!.! 정규 표현식 ( Regular Expression ) 정규표현식은 알파벳, 덧셈(+), 곱셈(·), 제곱(*)으로만 이루어져 있다. 덧셈 a+b는 a랑 b로 이루어진 집합에서 뽑아서 쓰는 것이다. a+b = {a, b} 라고 생각하자. 제곱 (a+b)*는 ƛ, a, b, aa, ab, ba, bb, aaa ,,, 등이다. 순서 상관 없다! a*는 0개 이상 반복이다. 예1 ) r = (a+b)*(a+bb) 예2) r = (aa)*(bb)*b 정규 표현식과 정규 언어의 관계 정규 문법 ( Regular Grammar ) 예1) V_0 -> aV_1 V_1 -> abV_0 | b V_0이 시작임
![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/bGCmen/btrgMsHQEvs/V8d9rWx88GwfRR1CcDI0kk/img.jpg)
이번 포스팅에서는 Chapter3를 다뤄보려고 한다! Syntax(구문): Semantic(의미론): 의미는 구문과 매우 밀접하다. 보고 유추할 수 있을 정도여야 한다! 용어 정리하기 sentence: character로 구성된 문장 language: sentence의 집합 lexeme(어휘 항목): language의 가장 낮은 level의 syntatic unit (ex: *, sum, begin) token: lexeme의 한 분류 (ex: identifier) 예시) Language란? 정의해보자! 크게 두가지 방식 - Recognizer(인식에 의한 정의) - parser같은거, Generator(생성에 의한 정의) BNF(Backus-Naur Form)와 Context-Free Grammar(문..
Automata 이론이란? abstract한 computing device에 대한 공부이다. automaton : abstract computing device 다룰 내용 Introduction to the Theory of Computation Mathematical Preliminaries and Notation Finite Automata Deterministic/Non-Deterministic Finite Accepters Regular Languages and Regular Grammars Properties of Regular Language Context-Free Languages Simplification of Context-Free Grammars and Normal Forms Pushd..
![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/thlYh/btrgqyaep8B/Lkoqdxx871pL0lxnToiYcK/img.jpg)
이번 포스팅에서는 Chapter 2의 내용을 다뤄보려고 한다. Deterministic Automata: 현재 상태에 의해서 move가 결정된다. Nondeterministic Automata: 여러개의 move가 있을 수 있다. DFA(Deterministic Finite Accepters): 결정적 유한 인식기 특징 내부 상태 개수가 유한하다. input string은 심볼의 sequnce로 구성됨 한 state에서 다른 state로 transition 가능 output이 있다 DFA의 정의 (1) DFA는 다음과 같은 5개 원소의 tuple로 정의된다. M = (Q, Σ, 𝛿, q0, F) Q: 유한개의 internal state의 집합 Σ: input alphabet 𝛿: Q ✖️Σ -> Q 는 ..
이번 포스팅에서는 Chapter 1의 내용을 다뤄보려고 한다! Chapter 1 답게 기본 상식들이 많이 나와서 이미 아는 부분들은 생략 했다. Introduction to the Theory of Computation에서는 증명 방법 - induction(귀납법), contradiction(귀류법) 내용이 간단하게 나오지만 Language, Grammar, Automaton이 이 단원의 포인트라서 이 부분만 집중적으로 다뤄보려고 한다. Languages string의 집합! string = {a, b, c, ...} 라면 string으로 만든 aa, bb, ccc, 등의 문자열이 language이다. Reverse: 거꾸로 string= {a, b}라면 {a, b, aa, bb, ab, ...} 등 0..
![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/XXx9x/btrgqGMZKtE/hBFUMuAzayYhXj7owcW1i1/img.png)
namespace 개념 여러명이 작업하다 보면 똑같은 함수 명, 변수 명 때문에 충돌날 수도 있는데 그런 실수를 방지하기 위한 개념이다. 개발자가 자신만의 namespace를 생성할 수 있고, namespace 안에 선언된 이름은 다른 namespace와 구분된다. namespace 선언하기 namespace 사용하기 std::란? 내가 정의한 SweetDev라는 namespace처럼, iostream헤더 안에 정의된 namespace중 하나이다. cout, cin, endl같은 함수들이 포함되어 있다. std::를 생략하고 싶다면? 파이썬처럼ㅎㅎ; cin과 >>를 이용해서 입력 받기 문자열 표현하기 1) c-string 방식 위의 선언은 그냥 단순 문자 배열이고, 두번째 Real선언만 C-string ..
// TODO
![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/bVAloI/btrfxOYc1WM/lIYiUHaNr8r5IZnSZWn0r0/img.png)
1. 주석 스타일은 C언어와 같다. (//, /**/) 2. void main()은 표준이 아니다. 내 경우에는 실행도 안됐다!! 3. main()에서 return 0을 생략하는건 문제가 없었다. 4. #include #include 에는 표준입출력을 위한 클래스, 객체, 변수들이 선언되어 있다. 5. count이 iostream에 들어있는 출력 스트림 객체인데, std namespace에서 선언하려면 std::cout으로 쓰면 된다. 6. > width >> height; 이렇게 쓸 수도 있다.
WIP
언어를 평가하는 기준 1. Readability Orthogonality (직교성) Orthogonality가 높아지면, 여러개의 원시 타입을 원하는 대로 비치해도 전부 다 코드가 성립하고 원시 타입을 이용해서 고급 자료 구조를 구현하는 것도 쉬워진다. 하지만, Orthogonality가 높아지면 에러를 잡기가 어려워진다. 2. Writability 3. Reliability Reliability는 다음과 같은 성질에 의해서 결정된다. Type Checking Exception Handling Aliasing Readability & Writability 4. Cost 5. 그 외 Portability Generality Well-definedness von-Neumann Architecture 구현 방..
d = sorted(arr, key = lambda x : x[1])
정의를 알고싶다면 >> https://sweetdev.tistory.com/126 구현 heapq는 내장 모듈이어서 바로 사용 가능하다. 문제는 heapq에서 제공하는 힙은 최소힙이여서, 최대 힙으로 쓰려면 살짝의 트릭을 써야 한다. PriorityQueue 구현하기 파이썬의 우선순위큐 구현은 PriorityQueue대신 heapq모듈을 쓰는것이 좋다. 파이썬의 PriorityQueue 내부는 결국 heapq라서 heapq를 쓰는것이 훨씬 빠르기 때문이다! [참고] https://littlefoxdiary.tistory.com/3
print(*list)
안타깝게도 바로 a몇개, b몇개 알려주는 함수는 없지만 구할 수는 있다!! string = input() Alphabet = 'abcdefghijklmnopqrstuvwxyz' pt_freq = [0] * 26 for ch in string: if ch in Alphabet: idx = Alphabet.find(ch) pt_freq[idx] += 1 for i in range(0,26): print(pt_freq[i], end=" ") 스트링 한글자씩 돌면서, 알파벳 집합에 대해서 index를 찾아서 그 값을 추가해준다.
함수 제일 첫번째 인자 self의 의미 파이썬 메서드의 첫번째 파라미터명은 관례적으로 self라는 이름을 사용합니다. 호출 시 호출한 객체 자신이 전달되기 때문에 self라는 이름을 사용하게 된 것 이를 이용하여 클래스에서 바로 메소드로 접근하면서 위에서 할당한 Flight의 객체 f를 파라미터로 전달함으로써 똑같은 결과값 얻습니다. # 메소드 작성하기 class Flight: def number(self): return 'SN060' 이거랑 # 인스턴스의 메소드 사용 >>> from airtravel import Flight >>> f = Flight() >>> f.number() 'SN060' 이거랑 같다. # 클래스의 내부에 self 파라미터가 포함되는데 이를 이용한 접근법 >>> Flight.nu..
![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/dyNAnb/btq3NFE7eAu/RJDIGDTugHWU0o5FrjA53K/img.png)
Java의 Collection에 대해서 알아보자! 이런 애들은 java.util에 있다. Collection List ArrayList Vector LinkedList Set HashSet TreeSet 따로 Map HashMap Hashtable TreeMap Properties List의 종류로 ArrayList, Vector, LinkedList를 써놓았는데 정확한 의미는, List 인터페이스를 구현한 종류 중에서 ArrayList, Vector, LinkedList가 있는 것이다. List와 Set은 둘다 Collection인데 Map은 별개로 분리되어 있다. List와 Set은 객체를 추가, 삭제, 검색 하는 방법에 많은 공통점들이 있다. 반면 Map은 키와 값을 하나의 쌍으로 묶어 관리하기 때..