일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 백준
- 카카오코드페스티벌
- 17471
- 타겟넘버
- Ajax
- Git
- 알고리즘
- node.js
- SWEA
- 응답코드
- web
- staged
- 달팽이는올라가고싶다
- 소형기관차
- Java
- 17822
- boj
- react
- 1868
- 비동기
- commited
- JavaScript
- npm
- 파핑파핑지뢰찾기
- graph
- 2869
- SOCKET
- HTTP
- JSP
- GitHub
- Today
- Total
목록분류 전체보기 (47)
devlog
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/dpJp51/btqxqXcIgWc/wpaM7AkCe9VAqIcsOLJSK1/img.jpg)
1. Git이란 무엇인가? Git이란 버전 관리 시스템(VCS, Version Control System)의 한 종류이다. 그렇다면 여기서 말하는 버전 관리란 무엇이고, 왜 필요할까? 버전 관리란 이름 그대로 여러 파일을 하나의 버전으로 묶어 관리하는 것이다. 버전 관리를 예를 들어 말해보자. 예를 들어, 우리가 제출해야 하는 레포트가 하나 있다. 처음에 'report.txt'를 만들었다가 내용이 바뀔 경우 'report_최종.txt'으로 바꿨다가 다시 수정을 거치면서 'report_진짜최종.txt' 이런식으로 만든 경험이 있을 것이다. 우리는 여러 파일들을 복사, 저장, 백업 등을 하였고 이것을 버전 관리라고 부른다. 2. 버전 관리 시스템 하지만, 위에서 설명하였던 버전 관리 방식은 어떤 것이 가장 ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/L4pDx/btqxoPzNbXm/JsiVJd6R1kde0pjK5JWUp1/img.png)
String, StringBuffer, StringBuilder 차이점과 장단점 JavaString, StringBuffer, StringBuilder은 Java를 사용하면 종종 접하게 되는 문자열 클래스들이다. 이 세 가지는 모두 문자열을 저장하고, 관리하는 클래스인데 비슷한 이 클래스들을 여러 가지 만들어놓은 이유는 무엇일까? 1. String String을 먼저 소개하자면 String은 immutable(불변) 객체이다. 그래서 String은 new 연산을 통해 생성되면 그 인스턴스의 메모리 공간은 절대 변하지 않는다. 변하지 않고 + 연산이나 concat을 이용해서 문자열에 변화를 주면 메모리의 내용이 변하는 것이 아니라 새로운 String객체를 new로 만들어서 새로운 메모리 공간에 변한 문자열..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bshEJi/btqxgzXqVxZ/FdMg2jyelgtDHYFP8KUXS1/img.png)
오늘은 자바스크립트의 동작원리에 대해 간단히 알아보려고 한다. 자바스크립트는 싱글 스레드 기반으로 동작한다. 과연 싱글 스레드 기반으로 어떻게 동작하는 것일까? 자바스크립트가 동작하는 환경과 엔진에 대해 쉽고 간단하게 알아보자. 1. 자바스크립트의 엔진 구성 자바스크립트 엔진은 크게 두 부분으로 구성된다. 메모리 힙(Memory Heap) : 메모리 할당이 이루어지는 곳 콜 스택(Call Stack) : 코드가 실행되면서 스택 프레임이 쌓이는 곳 위와 같이 구성된다. 하지만 브라우저에는 거의 모든 자바스크립트 개발자가 사용하는 API가 있다. 예를 들면setTimeout과 같은 것들을 말한다. 그런데 이것들은 엔진이 제공하는 것이 아니다. 브라우저가 제공하는 웹 API가 DOM, AJAX,setTimeo..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/b0itQn/btqxdqNOkrx/GToKcJSknZhaegfEu5Y8zk/img.png)
문제 과 같이 정사각형 모양의 지도가 있다. 1은 집이 있는 곳을, 0은 집이 없는 곳을 나타낸다. 철수는 이 지도를 가지고 연결된 집들의 모임인 단지를 정의하고, 단지에 번호를 붙이려 한다. 여기서 연결되었다는 것은 어떤 집이 좌우, 혹은 아래위로 다른 집이 있는 경우를 말한다. 대각선상에 집이 있는 경우는 연결된 것이 아니다. 는 을 단지별로 번호를 붙인 것이다. 지도를 입력하여 단지수를 출력하고, 각 단지에 속하는 집의 수를 오름차순으로 정렬하여 출력하는 프로그램을 작성하시오. 입력 첫 번째 줄에는 지도의 크기 N(정사각형이므로 가로와 세로의 크기는 같으며 5≤N≤25)이 입력되고, 그 다음 N줄에는 각각 N개의 자료(0혹은 1)가 입력된다. 출력 첫 번째 줄에는 총 단지수를 출력하시오. 그리고 각..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bF6nLC/btqxqKEyoci/vdKp0DrLKKfDLOBK85DCJ0/img.png)
ES6에서 배열과 object를 조금 더 쉽게 다루는 방식이 추가됐다. 구조 분해 할당 구문은 배열이나 객체의 속성을 해체하여 그 값을 개별 변수에 담을 수 있게 하는 JavaScript 표현식이다. 구조 분해 연산자, 전개 연산자, 각 배열에 들어가 있는 데이터를 하나씩 가져와서 처리해야 되는 상황을 한 번에 처리할 수 있도록 해준다. 1. 객체 구조 분해 할당 아래는 객체 구조분해(destructuring)의 예시이다. let obj = { name : "devlog", age : 1 }; let { name, age } = obj; name과 age의 값을 확인해보면 각각 obj.name, obj.age의 값이 담긴 것을 확인해볼 수 있다. 객체를 구조분해 할 때 주의해야 할 것은 우선 할당 연산자..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/btdsgf/btqw56XiYjm/5Kx7xdncoBNkoAGypUCDK0/img.png)
Promise (프로미스) 싱글 스레드인 자바스크립트에서 비동기 처리를 위해서 콜백(callback)을 사용해왔다. 덕분에 비동기 처리를 온전히 해낼 수 있었지만 이런 콜백이 반복되면서 콜백 지옥이 생겨났다. 콜백 지옥으로 인해 복잡도가 증가하고 예외처리가 어려워졌다. 이러한 단점을 보완하기 위하여 생긴 것이 Promise이다. Promise를 간단히 소개하자면 비동기에서 성공(fulfilled)과 실패(rejected)를 분리해서 메서드를 수행해주는 것이다. fulfilled 혹은 rejected될 때, 프로미스에 연결한 처리기는 그 프로미스의 then 메서드에 의해 대기열에 오른다. 1. Promise 생성 방법 var promise1 = function(bool){ return new Promise..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/dp0Exc/btqwPYrAByq/inbx3ZNsOk7Qgynz8waFD0/img.jpg)
마크다운(MarkDown)이란? 일반 텍스트 기반의 마크업 언어로 README.md 파일이나 온라인 문서, 혹은 일반 텍스트 편집기로 문서 양식을 편집할 때 쉽게 쓰고 읽을 수 있으며 HTML로 변환이 가능하다. 확장자가. md인 파일을 말한다. 마크다운 문법(사용법) 1. 헤더(Header) # This is a H1 ## This is a H2 ## This is a H3 This is a H1 This is a H2 This is a H3 2. 인용문(Blockquotes) text1 > text2 > > text3 text1 text2 text3 3.목록(List) * Item 1 * Item 2 * Item 2-1 * Item 2-2 1. Item 1 1. Item 2 1. Item 2-1 1...
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cftj3f/btqxmwBapbb/FMOLRDnE8k8u3Iezlvtq0K/img.png)
Javascript로 개발을 하신다면 'callback'이라는 키워드를 한 번쯤 들어보셨을 것이라 생각합니다. 과연 callback이란 무엇일까요? 1.callback이란? javascript에서는 callback 함수는 다른 함수의 매개변수로 함수를 전달하고, 어떠한 이벤트가 발생한 후 매개변수로 전달한 함수가 다시 호출되는 것을 의미합니다. callback은 쉽게 말하자면 어떤 일을 다른 객체에게 시키고, 그 일이 끝나는 것은 기다리지 않고 끝나고 부를 때까지 다른 일을 하는 것을 말합니다. 그렇기 때문에 non-block이며, 비동기 방식의 함수를 사용합니다. 2.callback 함수 사용법 function first(a,b,callback){ let v=a*b; callback(v); } firs..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cDrBo0/btqxpAa7lu4/C13MLGC3tpmdmx6K8CiVWk/img.png)
Javascript의 변수 선언 방식인 var와 let 그리고 const는 어떤 차이점에 대해 알아보자. 1.var ES6(ECMAScript6) 이전에 나온 변수 선언 방식입니다. var와 let의 차이점으로는 scope이 있습니다. var는 function 단위의 scope을 가집니다. var str="hello"; if(true){ var str2="world"; } console.log(str2);//world 위의 코드는 if문 안에서 str2를 선언했지만 if문 밖에서도 변수가 유효한 것을 알 수 있습니다. 또한 같은 이름의 변수를 여러 번 선언하여도 오류가 나지 않습니다. var str="hello"; var str="world"; console.log(str);//world 위와 같이 같은..
문제:https://www.swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV15FZuqAL4CFAYD&categoryId=AV15FZuqAL4CFAYD&categoryType=CODE&&& SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! www.swexpertacademy.com 풀이 문제는 암호 코드가 정상인지 아닌지를 판별하는 것입니다. 정상인 암호코드는 8개의 숫자를 첫 번째부터 여덟 번째로 본다면 “(홀수 자리의 합 x 3) + 짝수 자리의 합 + 검증 코드” 가 10이 되어야 합니다. 그런데 입력에 0을 포함하는 경우가 있는데 거기서 암호코드를 추출하는 방법은..