분류 전체보기53 [바킹독 실전 알고리즘 0x03] 배열 배열 정의: 메모리 상에 원소를 연속하게 배치한 자료구조. 성질: 1. O(1)의 시간복잡도만을 사용해 k번째 원소를 확인/변경이 가능하다. 메모리 상에 연속하게 배치되어있기 때문에 가능하다. 2. 추가적으로 소모되는 메모리의 양(=overhead)가 거의 없다. 3. cache hit rate가 높다. 4. 메모리 상에 연속한 구간을 잡아야해서 할당에 제약이 걸린다. 배열의 임의의 위치에 원소를 추가하는 데 걸리는 시간복잡도는 O(N)이다. 하나의 원소를 추가하기 위해 뒤에 남은 원소들을 모두 한 칸씩 밀어야하기 때문이다. 마찬가지로 임의의 원소를 제거하는 연산도 O(N)의 시간복잡도를 요구한다. 배열에 원소를 추가하거나 삭제하는 것은 다음과 같이 구현할 수 있다: //idx번째 위치에 num을 넣는 .. 2023. 1. 28. [C++] 백준 10871 #include int main(void) { std::ios::sync_with_stdio(0); std::cin.tie(0); int n, x, a[10000]; std::cin >> n >> x; for (int i=0;i > a[i]; for (int j = 0;j < n;j++) { if (a[j] < x) { std::cout 2023. 1. 28. [바킹독 실전 알고리즘 0x02] 기초 코드 작성 요령 II STL과 함수 인자 void func(int a){ a=5; } int main(void){ int t=0; func(t); cout 2023. 1. 28. [바킹독 실전 알고리즘 0x01] 기초 코드 작성 요령 I 시간, 공간복잡도를 고려하라 대략적인 N의 크기에 따른 허용 시간복잡도 N의 크기 허용 시간복잡도 N 2023. 1. 26. [Backend] 노드 기능 REPL 자바스크립트는 스크립트 언어라서 즉석에서 코드를 실행할 수 있다. js에서는 REPL이라는 콘솔이 제공된다. R(Read), E(Evaluate), P(Print), L(Loop) Window에서는 명령 프롬프트, 맥/리눅스에서는 터미널에 node 입력하면 노드를 실행할 수 있다. 모듈 만들기 노드는 자바스크립트 코드를 모듈로 만들 수 있다. 모듈: 특정한 기능을 하는 함수나 변수들의 집합 모듈로 만들면 여러 프로그램에서 재사용이 가능하다. node의 모듈 시스템(require, module.exports)은 js의 모듈 시스템(import, export)과 문법이 다르다. require를 import ~ from ' '로, module.exports 를 export default로 대체할 수 .. 2023. 1. 26. [Backend] 프로미스 콜백 헬이라고 불리는 지저분한 자바스크립트 코드의 해결책 = 프로미스 프로미스: 내용이 실행은 되었지만 결과를 아직 반환하지 않은 객체. 결과가 출력되기 전까지 결과를 들고다닌다. then이나 catch를 붙여서 결과를 반환받을 수 있다. 실행이 완료되지 않았으면 완료된 후에 then 내부 함수가 실행됨 promise는 어떤 동작을 한다. 예를 들면 어떤 파일을 읽어 온다든지, 네이버와 같은 웹사이트에 요청을 보낸다든지. 동작의 결과(성공 or 실패)에 따라 실행되는 코드가 나뉜다. resolve(성공 리턴값)를 호출하면 then으로 연결한다. reject(실패 리턴값)를 호출하면 catch로 연결한다. finally 부분은 무조건 실행된다. const condition = true; //true면 re.. 2023. 1. 26. 비구조화 할당 javascript에서 코드를 간결하게 만들기 위해 생긴 문법이다. 예전에는 다음과 같이 세 줄로 써야했던 코드를 const example = { a:123, b: { c: 135, d:146 }} const a = example.a; const d = example.b.d; 비구조화 할당을 사용하면 한 줄로 작성 가능하다. const { a, b: {d}} = example; //example에서 a와 b 안의 d를 꺼내두라는 뜻이다. 콘솔을 찍어보면 다음과 같은 출력이 나온다. console.log(a); //123 console.log(d); //146 예제를 하나 더 살펴보자. 배열을 사용하는 경우에도 비구조화 할당을 하면 코드가 간결해진다. arr = [1,2,3,4,5]; const x = a.. 2023. 1. 26. 화살표 함수 앞서 설명한 const 와 let은 var을 완벽하게 대체할 수 있지만, 화살표 함수는 function을 완벽하게 대체할 수는 없다. function을 사용한 기존 문법 function add1(x, y) { return x+y; } 화살표 함수 사용 const add2 = (x, y) => { return x+y; }; //함수명 대신 변수명을 쓰고, = (parameters) => 를 사용. 중괄호 뒤에 바로 return문이 나온다면, 이 둘을 모두 생략해도 된다. const add3 = (x, y) => x+y; 위 방법을 사용하면 간결하지만 헷갈릴 수 있기 때문에 대부분 리턴 값을 소괄호로 묶어준다. const add4 = (x, y) => (x+y); 객체를 리턴하는 경우, 소괄호가 필수이다. .. 2023. 1. 25. 템플릿 문자열, 객체 리터럴 탬플릿 문자열 프로그래밍을 하다 보면 종종 다음과 같은 코드를 작성하는 경우가 있다: var won = 1000; var result = '이 과자는 '+won+'원입니다.' 그런데 이런식으로 +로 출력문을 연결하게 되면 띄어쓰기를 고려해야하고 변수가 많아지면 식이 복잡해진다. 그래서 나온 게 탬플릿 문자열이다. ${}안에 변수명을 작성하면 된다. var won = 1000; const result = `이 과자는 ${won}웝입니다.`; cf) tagged template literal function(){} 내부에 함수 내용을 작성한 후, a(); 로 함수를 호출할 수 있다. 하지만 다음과 같이 소괄호()말고 백틱`을 사용해 함수를 호출할 수도 있다. a``; 이를 tagged template lit.. 2023. 1. 24. 이전 1 2 3 4 5 6 다음