전체 글 77

Node.JS

Node.js는 Javascript언어를 기반으로 돌아가는 런타임 환경이다.우리가 흔히 말하는 JavaScript는 두 가지 의미가 있는데, 하나는 Language이며 다른 하나는 Run Time Environment이다.Node.js는 이 중에서 Javascript의 런타임 환경인 것이다.그렇다면 등장 배경은 무엇인가? 기존의 Javascript는 Web 기반에서만 돌아갔다. 그래서 Web 상의 보안 문제가 자연스레 따라왔고, 이로 인하여 각종 제약사항이 많이 따랐다고 한다. 그래서 등장한 것이 Node.js이다. Javascript를 Web상에서가 아닌, 외부에서 Node.js 에서 돌아갈 수 있도록 해주는 런타임 환경이 등장한 것이다.이러한 Node.js의 특징을 살펴보자.첫 째, Node.js는 ..

취업/면접 2017.10.25

[백준 알고리즘 - 백트래킹] 스도쿠

https://www.acmicpc.net/problem/2580소요시간: 3시간 ㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠ 삼성 가고파요 제발풀이입니다 참고만 해주세요 알고리즘 초보자입니다.colMaps[i][j] ====> i행에 j라는 숫자가 있다면 1, 없다면 0rowMaps[i][j] ====> i열에 j라는 숫자가 있다면 1, 없다면 0groupMaps[i][j] ====> i그룹에에 j라는 숫자가 있다면 1, 없다면 0 (그룹의 인덱스의 경우 i = 3*(x좌표/3) + y좌표/3 으로 표현해 줬다.) N-Queen 문제와 마찬가지로, 다음 노드 방문 여부를 판단(isPromising)해야 한다.(백트레킹)그런데, 모든 행, 열, 그룹을 탐색하기에는 시간이 너무 오래 걸린다.그래서 공통된 행..

공부/Algorithm 2017.10.18

비트마스크 사용해보기 (Java)

A B C D 를 선택할 수 있는 경우의 수를 구할 때, 0000 0001 0010 0011 0100 ... 식으로 0000에 1씩 더해주면 구할 수 있다.따라서 총 선택 갯수는 2^4(아무것도 선택하지 않는 경우 포함) 이다.그리고 경우를 선택한 경우 각 bit가 0인지 1인지 판단하기 위하여 0001을 left로 1bit씩 4번 shift 해준 후 & 연산을 해준다.(비트마스크 사용)예를 들어, 0011 의 경우 각 bit가 0인지 1인지 판단하기 위하여0011 & 0001 -> 0001 (1)0011 & 0010 -> 0010 (2)0011 & 0100 -> 0000 (0)0011 & 1000 -> 0000 (0)으로 결과가 0이 아닐 경우, ON(1)임을 판단할 수 있다.12345678910111..

공부/Algorithm 2017.10.17

[삼성 SW EA] N-Queen 백트레킹

백트레킹이란? 특정 노드의 유망성(Promising)을 검사하고 유망하다면 자식 노드로, 유망하지 않다면 그 다음 부모 노드로 탐색을 하는 것이다.N-Queen은 N*N개의 체스판에서 N개의 Queen이 서로 열, 행, 대각으로 겹치지 않는 경우의 수를 구하는 것이다. 첫 번째 부모(첫 번째 행)는 1~n까지의 열을 가질 수 있고두 번째 부모(두 번째 행)은 1~n까지의 열을 가질 수 있고 -> point세 번째 부모(세 번째 행)은 1~n까지의 열을 가질 수 있고...N 번째 부모(N번째 행)은 1~n까지의 열을 가질 수 있다.즉 ,배열로 이용하면a0 a1 a2 .......... an-1 -> 열 [0] [1] [2] .............[n-1] -> 행로 표현할 수 있다.(1차원 배열로 나타낼..

공부/Algorithm 2017.10.17

[삼성 SW EA - dfs] 보호필름

Maps를 무작정 조작하려 들기보다는, 출력에 필요한 정보를 dfs로 전달하는 것이 좋다.아래처럼, DFS에 들어갔을 때 -> 현재 상태에 대한 배열을 만들고 -> 함수 인자 값으로 받아온 이전 상태로 현재 상태에 대한 배열을 채워준다. -> 그리고 채워준 현재 상태의 배열로 DFS에 들어간다.굳이 인자에 들어온 값을 조작하려 들지 말고, 인자로 들어온 이전 값을 활용하여 현재 값을 채운 후 보내주자. 그러면 이것이 백트래킹이 된다. 또한, 삼항 연산자를 쓰니 굉장히 보기 편하다. 반성해야겠다. 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636..

공부/Algorithm 2017.10.17