https://www.acmicpc.net/problem/1182 1182번: 부분수열의 합 첫째 줄에 정수의 개수를 나타내는 N과 정수 S가 주어진다. (1 ≤ N ≤ 20, |S| ≤ 1,000,000) 둘째 줄에 N개의 정수가 빈 칸을 사이에 두고 주어진다. 주어지는 정수의 절댓값은 100,000을 넘지 않는다. www.acmicpc.net input - N : 수열의 갯수 - S : 부분수열의 합이 되어야 할 값 - number : 수열 output - 부분수열과 S가 일치하는 갯수를 반환. solution - dfs - 수열 number와 S, 수열의 index인 idx와 수열의 합으로 next를 넘겨준다. - idx를 증가시키며 호출한다. - next와 현대 index의 수를 합하며 recur..
https://www.acmicpc.net/problem/1251 1251번: 단어 나누기 알파벳 소문자로 이루어진 단어를 가지고 아래와 같은 과정을 해 보려고 한다. 먼저 단어에서 임의의 두 부분을 골라서 단어를 쪼갠다. 즉, 주어진 단어를 세 개의 더 작은 단어로 나누는 것이다 www.acmicpc.net 단어를 3분할 하여 분할된 단어를 각각 reverse하여, 합친 후 사전순으로 가장 빠른 단어가 될 경우를 return 시켜야 된다. 자른 문자열의 길이가 최소 1이상이 되어야 한다. 주어진 input이 mobitel일 경우 mob, ite, l을 각각 reverse 하면 bom, eti, l가 나오는데 합치면 bometil이 되며 이 단어는 만들 수 있는 단어 중 사전순으로 가장 빠르다. #inc..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/UNvXc/btrczQLF1xK/2OETwbjeOWRkUOkCWKTAk0/img.png)
Rust 코드로 작성하는 WASM (with react) Document getElementById method javascript의 Dom method 중 getElementById를 wasm으로 구현할 수 있습니다. web_sys::Document의 get_element_by_id(id) 메서드를 이용할 수 있습니다. cargo.toml 설정 [dependencies.js-sys] version = "0.3.5" [dependencies.web-sys] version = "0.3.5" features = [ 'console', 'Document', 'Window', 'HtmlElement', ] web_sys에서 지원하는 window.document.get_element_by_id('id')를 사용하..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/5YVIc/btrb9RLu1Wu/f38fBNUPD6DtDOGgKVYvL1/img.png)
wasm을 학습하다 보니 생각보다 굉장히 잘 되어 있어서 싱방하여 몇가지 기능들을 포스팅해두려고 합니다. 이전에 react 개발환경에 wasm을 사용할 수 있도록 설정한 react 프로젝트가 있으므로 해당 프로젝트를 이용하여 wasm 코드를 작성했습니다. react는 javascript가 아닌 typescript를 사용한 프로젝트입니다. :) Console.log console에도 수많은 기능이 있지만 여기서는 자주 사용하는 console.log기능만 포스팅 하겠습니다. Cargo.toml dependency 설정 web-sys를 Cargo.toml에 추가해주어야 합니다. ... [dependencies.web-sys] version = "0.3.5" features = [ ..., 'console', ..
https://www.acmicpc.net/problem/9012 9012번: 괄호 괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 ‘(’ 와 ‘)’ 만으로 구성되어 있는 문자열이다. 그 중에서 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(Valid PS, VPS)이라고 www.acmicpc.net 괄호가 정상적인 괄호 문자열인지 검증하는 문제 정상적인 괄호라면 "YES"출력 아니라면 "NO" 출력 #include #include #include using namespace std; bool confirm(string object) { if (!object.size()) return true; if (object.size() % 2) return false; i..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/bixwit/btrb1w9E2eF/tqsqH9a79mSVrLCTHBGIDK/img.png)
Relational DB ACID ACID란 원자성, 일관성, 고립성, 지속성의 약자로 DB 트랜잭션이 안전하게 수행됨을 보장한다. 트랜잭션(Transaction) : DB의 상태를 변환시키는 하나의 논리적 기능을 수행하기 위한 작업의 단위 또는 일련의 연산 1. Actomicity (원자성) 각 트랜잭션이 완전히 성공하거나 완전히 실패함을 보장한다. 이는 DB의 부분 업데이트를 방지한다. 입금 프로세스를 예로들자면 A가 B에게 입금을 하는데 A에서 돈이 빠져나오는 action, B에 돈을 입금하는 action이 모두 이루어 져야 원자성을 지킬 수 있으며, A에서 돈을 빼고 B에 입금이 되지 않는다면 그대로 돈이 유실되어버린다. 2. Consistency (일관성) 트랜잭션의 수행 전/후의 DB는 항상 ..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/RTbe4/btrbkVVqW2e/Ew7KE4kRiH7uwCsColtGuK/img.png)
1. canvas 요소 및 ref 정의 //html //typescript const canvasRef = useRef(null); //rust //dom에 직접 접근하지 않음. //wasm 사용 중이므로 함수의 인자로 넘겨주는 방식 fn canvas(canvas: web_sys::HtmlCanvasElement) { ... } 2. '2d' context 정의 - context는 화면에 그림을 그릴 펜이라고 생각하면 된다. //typescript //ref가 null일수 있으므로 옵셔널 체이닝 정의 let context = canvasRef.current?.getContext('2d'); //rust let context = canvas .get_context("2d") .unwrap() .unwrap..
Rust의 Closure는 변수에 저장하거나, 다른 함수에 인자로 넘길 수 있는 익명함수이다. 클로저의 특성은 호출되는 Scope에서 클로저함수의 Lexical 환경을 사용할 수 있다. javascript에서도 클로저 함수가 있는데, 다른 Scope에서 클로저의 환경을 사용할 수 있다는 개념이 비슷해보인다. Closure의 Use case 운동 관리 앱을 만든다고 가정했을때, 필요한 기능은 아래의 내용으로 가정한다. - 평소 운동 강도가 일정 이하일 경우 운동한 내용 출력. - 평소 운동 강도가 일정 이상 넘어가고 랜덤 숫자와 일치할 경우 금일 운동 제외. - 랜덤 숫자와 일치하지 않을 경우 금일 운동한 시간 출력 필요한 기능을 구현하기 위해 프로그램에서 돌아갈 간단한 알고리즘을 만들었다. use std..