[JS] substr(), substring(), slice()란? + 차이점
·
FE/Javascript
프로그래머스에서 자바스크립트 코딩테스트 문제를 풀고 다른 사람의 풀이를 보는데 어떤 풀이 밑에 이런 댓글이 달려있었다.(!!) 평소에 substr과 substring, slice를 구분하지 않고 썼었는데 무슨 차이가 있는건지, substr을 권장하지 않는 이유에 대해서도 더 알아보려 한다. 1. substr() str.substr(start, length) substr 함수는 특정 위치에서 시작해서 특정 문자 수 만큼의 문자들을 반환한다. 파라미터로 입력받은 start 인덱스부터 length 길이만큼 string을 잘라내어 반환한다. 첫 번째 글자의 인덱스는 0부터 시작한다. start가 양수일 때 문자열 전체 길이보다 크거나 같을 경우: 빈 문자열 반환 start가 음수일 때 문자열 끝에서 start ..
투포인터 알고리즘, 슬라이딩 윈도우
·
Algorithm/Data Structure, Algorithm
투포인터 알고리즘(Two Pointers Algorithm) 투포인터 알고리즘은 1차원 배열에서 각자 다른 원소를 가르키는 2개의 포인터를 조작해가면서 원하는 것을 얻는 형태이다. 알고리즘 문제를 풀다가 완전 탐색으로 해결하다가 시간 초과가 발생하는 경우에 사용할 수 있다. 문제는 N칸의 1차원 배열이 있을 때, 부분 배열 중 그 원소의 합이 M이 되는 경우의 수를 구하는 것이다. 이 문제에서 각 원소는 자연수이고 M 또한 자연수인데, 이 조건이 성립할 경우 사용할 수 있는 알고리즘은 다음과 같다. 포인터 2개를 준비. 이를 left, right라고 함. 처음에는 left = right = 0. 항상 left
[JS] map 함수
·
FE/Javascript
공부는 하면 할수록 모르는 게 많은 것 같다.. 오늘은 자바스크립트의 map 함수에 대해서 공부한 내용을 정리해보려 한다. - map() 메서드는 배열 내의 모든 요소 각각에 대해 주어진 함수를 호출한 결과를 모아 새로운 배열을 반환한다. arr.map(callback(currentValue[, index[, array]])[, thisArg]) callback: 새로운 배열 요소를 생성하는 함수. 다음의 세가지 인수를 가진다. currentValue: 처리할 현재 요소 index(Optional): 처리할 현재 요소의 인덱스 array(Optional): map()을 호출한 배열 thisArg(Optional): Optionalcallback을 실행할 때 this로 사용되는 값 map은 callback..
[JS] 배열 정렬 sort() 함수
·
FE/Javascript
Javascript에는 배열의 요소들을 정렬해주는 sort() 함수가 존재한다. 이의 사용 방법을 정리해보려 한다. arrayobj.sort(sortFunction) arrayobj는 임의의 Array 개체, sortFunction은 요소 순서를 결정하는 데 사용되는 함수의 이름이다. 생략하고 arrayobj.sort()로만 쓰면 오름차순, ASCII 문자 순서로 정렬된다. sortFunction 인수에 함수를 지정하면 아래의 값 중 하나가 반환된다. 첫 번째 인수가 두 번째 인수보다 작을 경우: - 값 두 인수가 같을 경우: 0 첫 번째 인수가 두 번째 인수보다 클 경우: + 값 1. 문자 정렬 var fruit = ['orange', 'apple', 'banana']; fruit.sort(); // ..
React의 LifeCycle
·
FE/React
LifeCycle method는 React component의 생성부터 소멸까지 일련의 이벤트들이라고 할 수 있다. 리액트의 모든 이벤트는 lifecycle을 지난다. 1. Mounting 2. Updating 3. Unmounting 1. Mounting - 컴포넌트가 생성될 때, 다음과 같은 순서대로 호출된다. constructor() static getDerivedStateFromProps() render() componentDidMount() constructor() - React component의 constructor()는 컴포넌트가 마운트되기 전에 호출된다. 보통 개체를 this.state에 할당하여 로컬 상태를 초기화하거나, 인스턴스에 이벤트 처리기 메소드를 바인딩할 때 사용한다. 그리고 ..
[알고리즘] 완전탐색(Brute-Force)
·
Algorithm/Data Structure, Algorithm
완전탐색이란 가능한 모든 경우의 수를 일일히 나열하면서 계산하는 방법이다. 이는 100%의 확률로 문제의 답을 찾아낼 수 있는 방법이다. 하지만 완전 탐색은 답으로 가능한 경우의 수가 많은 경우에는 이용하기가 어려우므로 이를 활용할 수 있는 문제인지 잘 생각해보고 쓰는 것이 좋다. 아래는 완전 탐색을 이용할 수 있는 예제들 정리 (풀어볼 것!) https://www.acmicpc.net/problem/2309 2309번: 일곱 난쟁이 아홉 개의 줄에 걸쳐 난쟁이들의 키가 주어진다. 주어지는 키는 100을 넘지 않는 자연수이며, 아홉 난쟁이의 키는 모두 다르며, 가능한 정답이 여러 가지인 경우에는 아무거나 출력한다. www.acmicpc.net https://www.acmicpc.net/problem/22..
자바스크립트로 난수 맞추는 게임 만들기
·
FE/Javascript
자바스크립트로 간단하게 컴퓨터가 생성시킨 난수를 사용자가 맞추는 게임을 만들어 보았다. 구현하면서 몰랐다가 새로 알게 된 내용들을 아래에 정리해보려 한다. (전체 코드는 맨 아래에!) 1. Range 바뀐 값을 실시간으로 보여주기 2. input안에 있는 값이 text인지 확인하기 3. 난수 발생시키기 4. 자식 노드 모두 없애기 1. Range 바뀐 값을 실시간으로 보여주기 range 값이 변경될 때마다 실시간으로 보여주는 것을 하고 싶었는데 addEventListener에서 값을 "change"로 하면 바뀌고 나서의 값만 떠서 그 방법을 찾아보았다. function init() { numberLabel.innerHTML = `Generate a number between 0 and ${numberRa..
[Linux] 하둡 start-all.sh Permission denied(publickey, passwd) 문제 해결
·
Trouble Shooting
하둡을 설치하고 $HADOOP_HOME/sbin/start-all.sh 명령어로 하둡을 실행하려고 해도 자꾸 permission denied(publickey, passwd) 오류가 떠서 실행을 하지 못했다. 구글링 해서 시키는대로 다 해봐도 안되서 좌절하던 도중 해결 방법을 찾았다. ~/.ssh에 대한 권한 설정이 잘못되어있는 것이 문제였다. 전에 ssh 파일 생성할 때 문제가 생겨 권한을 chmod 777로 줬었는데 그게 문제였다. 일단 .ssh와 그 안에 authorized_keys까지 다 만들었다고 가정했을 때 chmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys 명령어를 입력해주고 나서 하둡을 실행하니 잘 동작하는 것을 확인했다. 괜한 걸로 오래 고민한 것같아..
윈도우에서 SSH Key 생성하기(cmd,명령프롬프트 사용)
·
Algorithm
깃허브를 시작하면서 Clone을 해보려고 하는데 아래와 같은 메세지가 떠서 윈도우에서 ssh key 만드는 방법을 찾아보았다. 일단 C드라이브의 Users 폴더에서 ssh-keygen -t rsa -b 4096 -C "아이디@이메일.com" 을 입력하고 엔터를 세번 눌러준다. (비밀번호를 설정해줄 것이라면 Enter passphrase: 에 비밀번호를 입력해주면 된다.) 그러면 아래와 같은 화면이 나올 것이다. 그리고나서 C드라이브에 \Users\유저이름\.ssh 에 들어가보면 id_rsa.pub 파일이 생성된 것을 확인할 수 있는데, 파일을 그냥 눌러서 열었더니 열 수 없다는 메세지창이 떠서 그냥 cmd상에서 파일내용을 읽어오게 해줬다. 윈도우 명령프롬프트에서 파일 내용을 보려면 'type 파일이름' ..