분류 전체보기 76

Python - List Comprehension

본 글은 Python 공식문서를 참고 하였습니다. List Comprehension 을 이용하면 매우 간결한 코드로 원하는 리스트를 만들수 있습니다. 아래의 코드는 for loop을 사용해 각 수의 제곱을 리스트에 저장합니다. square = [] for i in range(10): square.append(i**2) 결과: [0, 1, 4, 9, 16, 25, 36, 49, 64, 81] List Comprehension을 이용하면 다음과 같이 간결한 코드를 쓸수 있습니다. square = [i**2 for i in range(10)] 맨 먼저 저장 하고 싶은 값을 써주고 그에 이어서 for loop을 써줍니다. 이번에는 이중 for loop이 얼마나 간결하게 쓰여지는지 비교 해보겠습니다. 아래의 코드..

개발 공부 2020.12.16

Binary Search Tree - javascript

이번 글에서는 Binary Search Tree (이진 탐색 트리) 구조에 대하여 알아보고자 한다. 이 글에서는 숫자를 담을 것이고 Node라는 객체 안에다가 저장해서 Node 자체를 넣으려고 한다. 일단 기본 원리에 대하여 살펴보자. 아래의 사진은 각 원이 Node이고 각 Node안에 숫자가 담겨 있다. 각 Node 는 key, left, right 이라는 속성을 가지고 있다. "이진" 트리 구조 이여서 각 노드는 최대 다른 두개의 노드를 포인트 할 수 있다. 주의 깊게 보면 이 구조는 정렬에 최적화된 패턴을 가지고 있다. 각 노드가 포인트 하는 다른 노드들을 보면 왼쪽노드가 그 위의 노드보다 항상 작고 반대로 오른쪽 노드는 항상 크다는 것을 알 수 있다. 코드 class Node { construct..

개발 공부 2020.12.06

Express를 이용해 정적파일 불러오기

이번 글에선 저자가 Express를 이용해 Javascript가 포함된 HTML파일을 불러오는데에 있어서 겪은 경험을 바탕으로 쓰여진 글이다. 먼저 저자가 하고자 했던 내용을 간단히 설명하겠다. 문제 Express를 이용하여 main.js에서 index.html를 불러오고 index.html에는 태그를 이용하여 lib/tetris.js 파일을 source로 이용하고자 했다. 이 상태로 node를 실행할 경우 tetris.js를 찾지 못한다는 에러가 뜬다. 해결 Express에서는 정적파일들이 이용될 경우 경로를 미리 제시해주어야 한다. static이라는 함수를 이용해서 경로를 설정해주는 두가지 방법이있다. 1. app.use(express.static('public')) public이라는 경로안에 있는 ..

개발 공부 2020.10.18

프로그래머스 - 다리를 지나는 트럭

이번 글에서는 프로그래머스에 게시된 다리를 지나는 트럭 문제를 풀어 보겠다. programmers.co.kr/learn/courses/30/lessons/42583 코딩테스트 연습 - 다리를 지나는 트럭 트럭 여러 대가 강을 가로지르는 일 차선 다리를 정해진 순으로 건너려 합니다. 모든 트럭이 다리를 건너려면 최소 몇 초가 걸리는지 알아내야 합니다. 트럭은 1초에 1만큼 움직이며, 다리 길이�� programmers.co.kr 이 문제는 정해진 무게의 트럭들이 순서대로 다리를 통과하는데 걸리는 시간을 구하는 문제이다. 다만 다리가 버틸 수 있는 무게가 정해져 있으며 꼭 정해진 순서대로 다리를 지나가야한다. 이 문제는 간단해 보였지만 실제로 문제를 풀다보니 생각보다 이것저것 신경써야될게 많아서 거의 세시간..

개발 공부 2020.09.29

Java에서 Array 와 ArrayList 의 변환법

이번 글에서는 Array를 ArrayList로 변환 하는 방법과 ArrayList를 Array로 변환 하는 방법에 대해 알아보고자 한다. ArrayList -> Array List 인터페이스를 보면 toArray 라는 메소드가 있는데, 기본 생성자는 object 배열을 반환한다. 하지만 우리가 원하는 것은 정해진 타입의 배열이여서 toArray의 인자로 원하는 타입의 배열을 넣어준다. 마지막 줄에는 deepToString 메소드를 써서 배열을 문자열로 보여준다. 여기서 toString 메소드를 써도 되지만 toString은 1차원 배열만 지원한다는 것을 알자. Array -> ArrayList 위에서 만들어놨던 Array를 그대로 써서 ArrayList로 변환 하는 과정이다. 여기서 중요한 것은 왜 21..

개발 공부 2020.09.29

HashMap을 이용해 문자열에 있는 단어 수 세기

이번 글에서는 주어진 문자열에 있는 각 단어의 수를 세는 방법에 대해서 알아보고자한다. 예를 들어서 "I am a boy. You are a boy. She is a girl" 이라는 문자열이 주어진다. 이때, 특수문자(점)은 무시하고 띄어쓰기마다 단어라고 가정하자. 결과적으로 나오는 단어와 횟수를 세면 아래와 같이 나온다. I = 1 am = 1 a = 3 boy = 2 you = 1 she = 1 girl = 1 is = 1 are = 1 본글에서는 HashMap을 이용하여 이 문제를 접근 하고자 한다. HashMap은 특정 Key 가 Value를 담고 있으므로 이 문제에서는 단어를 Key로 횟수를 Value로 해주면 된다. 문제를 접근 하는 단계를 나눠보자. 1. 주어진 문자열의 특수문자를 없애준다..

개발 공부 2020.09.23

AOP (관점 지향 프로그래밍)의 쉬운예제1

이번 글에서는 AOP(Aspect Oriented Programming)에 대해 알아보고 자바를 통해 이해를 돕기 위한 쉬운예제를 해보려고 한다. OOP (객체지향)은 객체를 만들어 서로 소통하게 하는 프로그래밍 기법이다. AOP는 그보다 더 넓은 시각으로 여러 사용자의 관점에서 필요한 기능들을 모듈화 시켜낸 프로그래밍 기법이다. 예를 들어, 웹사이트를 구축하면 일반 사용자들이 주로 사용하게 되지만, 그 외에도 관리자와 개발자도 사용하게 되며 일반 사용자들이 쓰지 않는 로그, 권한, 트랜스액션처리 등의 특별한 기능이 요구된다. 이번 글에서는 자바를 이용해 특정한 함수가 처리 되는 시간을 구하는 기능을 구현해 볼것이며 나중에는 Annotation을 이용해 똑같은 예제를 만들 예정이다. 예제 본격적으로 예제..

개발 공부 2020.09.20

CSS selector을 이용한 노드 선택 (querySelector)

node를 선택하는 방법 중에는 getElementById, getElementsByTagName, getElementsByClassName 등 여러 가지가 있는데 이중에 비교적 최신에 나온 querySelector에 대해 알아보고자 한다. querySelector과 querySelectorAll로 나누어지는데 querySelector은 한 개의 노드만 호출하는 것이고 querySelectorAll은 한 개 이상의 노드들을 배열로 호출하는 것이다. querySelector을 사용하기 위해선 CSS selector 기본을 알고 있어야 사용하기 편한데, 간단히 몇 가지만 짚고 넘어가도록 한다. .name name이란 클래스를 가진 노드 #name name이란 아이디를 가진 노드 input[name='x'] ..

개발 공부 2020.09.13