자바스크립트

C, C++

C++) C++ 스타일 C코드와 this 포인터의 정의

C++ 스타일 C 코드 // C++ 스타일 C 코드 예 #include typedef struct USERDATA { int age; char name[32]; void(*print)(struct USERDATA* pUser); } void printData(USERDATA* pUser) { printf("%d, %s\n", pUser->age, pUser->name); } int main() { USERDATA user = { 30, "2DC", printData }; user.print(&user); return 0; } 위의 코드는 C언어를 C++ 스타일로 짜본 것이다. C언어는 클래스/객체 대신 구조체를 사용하고, 구조체는 기본적으로 메서드를 멤버로 둘 수 없다. 따라서 함수 포인터 멤버를 구조체..

알고리즘, 자료구조

[자료구조-JS] 이진탐색트리 너비우선탐색(BFS) 구현

너비우선탐색이란 무엇인가? 트리나 그래프를 탐색하는 기법 중 하나로써 너비(Breadth)를 우선적으로 탐색하는 방법이다. 너비우선탐색 구현을 위해서 보통 큐(Queue) 자료구조를 이용한다. 너비우선탐색의 동작 루트 노드부터 탐색을 시작한다. 기준 노드에 자식 노드들이 존재한다면 큐에 추가하고, 자기 자신은 큐에서 나온다. 위의 과정을 반복한다. 큐에 아무것도 존재하지 않게 된다면 탐색이 종료된다. 너비우선탐색 주의사항 만약 너비가 넓은 트리나 그래프라면 큐에 저장해야하는 너비 요소들이 많아지므로 공간복잡도가 증가한다. 따라서 너비우선탐색을 효과적으로 사용하기 위해서는 너비가 좁은 트리나 그래프를 대상으로 사용하는 것이 좋다. 구현 // 트리 구현체 class BST { constructor() { t..

알고리즘, 자료구조

[자료구조-JS] 더블 링크드 리스트 구현

더블 링크드 리스트 구현 목표 더블 링크드 리스트 설계하기 싱글 링크드 리스트와 더블 링크드 리스트 비교하기 더블 링크드 리스트의 기본적인 요소 구현하기 싱글 링크드 리스트와의 비교 더블 링크드 리스트와 싱글 링크드 리스트의 차이는 prev 포인터의 추가 유무입니다. 더블 링크드 리스트는 prev라는 포인터가 하나 더 추가됩니다. 그 외엔 같습니다. prev의 존재로 node를 탐색하는데 있어 싱글 링크드 리스트보다 절반의 시간이 걸립니다. 하지만 추가적인 메모리가 들게 됩니다. (메모리 사용량이 싱글 링크드 리스트보다 많습니다.) 시간복잡도(BigO) 삽입(Insertion) - O(1) 삭제(Removal) - O(1) 검색(Searching) - O(N) 접근(Access) - O(N) 기술적으로 ..

Javascript

자바스크립트 함수 주석 (기본기능)

/* 까지만 쳤을 때 자동완성 기능으로 /** */ 이 나오면 엔터쳐서 들어감. 자동적으로 함수에 있는 파라미터와 리턴값이 설정됨. 그럼 위와 같이 함수의 설명을 볼 수 있게됨. 이 기능들은 기본기능이라 별도로 무언가를 설치할 필요가 없음. 다만 따로 문서화를 하려면 라이브러리를 설치해야하는 것으로 알고있음.

Javascript

클린코드 연습 (2) - if 가공(+ 드 모르간 법칙), promise 활용, 함수 분리

버튼을 누르면 2초 뒤 DOM이 조작되어 브라우저에 렌더링 된다. 0. HTML 뼈대 및 정리 안된 코드 분식점 음식제작 한 껏 늘려쓴 코드이다. if문이 중첩되어있고, 모든 기능들이 함수 하나에 전부 내장되어 있다. 1. if 합치기 if문이 2개라면 연산자로 묶어서 하나로 표현해줄 수 있다. 이를 통해 코드 한 줄을 줄일 수 있고, 들여쓰기를 삭제해줄 수 있다. 1-1. if문 밖으로 코드 빼기 (+ 드모르간의 법칙) 논리 연산에서 AND와 OR 연산을 서로 바꾸고 각 변수에 부정을 취할 때 두 값은 논리적으로 같다는 것이 드모르간의 법칙이다. ('el이 존재하며 orderList가 배열로 존재해야 한다'와 'el이 없거나 orderList가 없어야 한다'는 논리적 동치관계) 여기에서는 드 모르간의 ..

Javascript

클린코드 연습 (1) - 배열 고차함수

문제 const grades = [80.55, 90, -95, -45, 44.3, 100, 177] /* 아래 조건에 따른 새로운 배열을 만들어서 console.log 해야 합니다. 1. 0 ~ 100점이 유효한 점수입니다. 2. 소수점을 제거해주세요. 3. 각 엘레멘트의 뒤에 '점'을 추가해주십시오. ex) 80점 4. console.log로 출력 해주십시오. */ const validGrades = [] // 새로운 배열입니다. for문, if문 const grades = [80.55, 90, -95, -45, 44.3, 100, 177] const validGrades = [] // 새로운 배열 // 1번 풀이 for (let grade of grades) { if (grade >=0 && grad..

Javascript

n x n 좌표 생성기 (2) / (클로저)

(1)에 이어... 격자 내부에 좌표를 추가해보았다. 코드 흐름 클래스 또는 생성자함수를 사용할 수 있는가? - YES!! 위의 경우는 BOX라는 오브젝트를 수없이 생성해야 하므로 기능적으로 클래스로 구현하기 용이하다. 내 구상과 디자인에 적합한 HTML 코드와 CSS 코드를 작성한다. Box 클래스를 생성한다. 각 박스는... - div element로 생성하고, css class를 달고있어야 한다. - 기본적으로 텍스트를 숨기고 있어야 한다. - div 스스로 텍스트 토글 기능에 관한 이벤트 리스너를 달고 있어야 한다. (클로저로 인해 이벤트 핸들러는 row, col, showing 변수에 접근할 수 있다.) container에 add 한다. 이후 n x n 박스를 만드는 함수를 제작하면 된다. 코드..

Javascript

n x n 좌표 생성기 (1)

만드는 이유 1. 심심한 주말, 공부하기 위해 2. 기능을 프로그래밍할 때 거쳐야하는 사고방식에 대해 익숙해지기 위해 단순하다. 숫자를 입력하면 n x n의 형식으로 네모 격자가 출력된다. 19를 입력하면 19x19가 되어 바둑판이 될 것이다. 코드 코드설명 html에서는 container로 사용할 div와 input 태그를 만들어준다. css에서는 격자가 들어갈 div의 스타일을 미리 설정해준다. 격자의 역할을 하기 위해 inline-block으로 설정되었으며, 사이즈는 정사각형(50px)으로 맞춰준다. JavaScript에서는... container div와 input의 dom을 취득한다. 최초 앱 실행시 input에 포커스가 이동하도록 .focus() 메서드를 실행해준다. Box라는 생성자함수를 만..

코테 문제 풀이

[백준 3052] 나머지 (Node.js)

문제 링크 https://www.acmicpc.net/problem/3052 3052번: 나머지 각 수를 42로 나눈 나머지는 39, 40, 41, 0, 1, 2, 40, 41, 0, 1이다. 서로 다른 값은 6개가 있다. www.acmicpc.net 답안 const fs = require('fs') const input = fs.readFileSync('/dev/stdin').toString().trim().split("\n").map(Number) function solution(input) { const map = new Map() for (let i = 0; i < input.length; i++) { const key = input[i] % 42 if (map.has(key) === false)..

코테 문제 풀이

[백준 1000] A + B (Node.js)

문제 링크 https://www.acmicpc.net/problem/1000 1000번: A+B 두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오. www.acmicpc.net 답안 const fs = require('fs') const inputData = fs.readFileSync('/dev/stdin').toString().split(' ') const a = parseInt(inputData[0]) const b = parseInt(inputData[1]) console.log(a+b) 백준은 문제풀이가 좀 기괴하다. fs 모듈을 불러와서 입력되어있는 데이터를 불러와 문자열화 한다. - fs.readFileSync는 buffer 형식으로 return되기 때문에 toStr..

2DC
'자바스크립트' 태그의 글 목록