알고리즘/JavaScript 22

JavaScript) 자료구조 Map을 활용하기

0. 오늘의 배울 것 Map은 key-value 쌍으로 이루어진 자료구조이다!! 배열은 각 원소에 고유의 인덱스 값을 붙여 순서대로 저장하는 자료 구조이다. 그런데 순서가 중요하지 않은 경우 굳이 배열을 쓰기보단, map을 쓰는 게 더 효율적이다. List형태의 자료구조들은 순서대로 값을 차곡차곡 저장하는 하나의 줄과 같은 형태지만(ordered), Map 자료구조는 각각의 Key와 매칭 되는 Value을 저장하기 때문에(unordered) 즉 순서보다는 정의된 이름(Key)과 상응하는 데이터들을 묶기 위한 자료 구조로서 효과적이다. 보통 map 자료구조는 hash 함수를 써서 linked list를 활용해 구현되는데, 이 특성 때문에 value 값을 찾거나 삽입, 삭제하는 연산이 빠르다! 1. Map ..

JavaScript) 배열 메소드 some과 every 사용하기

0. 오늘의 배울 것 배열 메소드의 some과 every를 알아보자! 이름 그대로 some은 배열 내에 조건을 만족하는 요소가 1개 이상 있는지, every는 배열 내에 요소가 모두 조건을 만족하는지 알려는 메소드이다. 사실 필자는 filter, find 메소드만 잘 활용하면 되지 않을까 싶긴 하다. every 메소드는 몰라도 특히 some 메소드는, find 메소드와 거의 비슷하기 때문에... 시간 복잡도 면에서도 큰 차이가 없어보인다. 이번 포스팅에서는 some과 every 메소드를 간단하게 알아보고 넘어가자. 1. 배열 메소드 some 다른 배열 메소드와 마찬가지로 some 메소드의 인자로 콜백 함수를 받고, 콜백 함수에는 최대 3개의 인자를 받을 수 있다. const nums = [1, 2, 3,..

JavaScript) 배열 메소드 filter와 find 사용하기.

0. 오늘의 배울 것 js의 배열 메소드 중에는 filter과 find가 있다. 이름에서 알 수 있듯이, 배열의 요소들을 하나씩 살펴보면서 요소를 찾는 동작을 하는 메소드이다. 가끔 프로그래머스나 백준에서 배열 내 어떠한 조건에 맞는 값들을 찾으라는 문제가 주어지는데, 그 때 사용하면 좋을 메소드들이다! 1. 배열 메소드 filter filter 메소드는 map 메소드와 비슷하게 새로운 배열을 만들어 리턴해준다. 때문에 인자로 넣어줄 콜백함수에 리턴문을 써줘야 한다. 주의할 점은 콜백함수의 리턴문에는 어떠한 값이 아니라 true false를 도출하는 조건문을 적어야 한다는 것이다. const foods = [ {name: "apple", brand: "fruit"}, {name: "banana", bra..

JavaScript) 배열 메소드 forEach와 map 사용하기.

0. 오늘의 배울 점 배열의 원소를 가지고 반복적인 동작을 수행할 때 보통 for of문을 자주 썼었다. (배열에 for in 문을 쓰지 않는 이유는 아래 링크 참고..) JavaScript로 배열 다루기 : for in 문은 배열에서 쓰지 마라? 그런데 for 문 말고, 배열 자체 메소드를 통해 반복적인 작업을 수행할 수 있다. 바로 forEach와 map 메소드 이다!! js에서 배열을 다루는 메소드, forEach와 map을 알아보고 어떻게 활용할지 생각해보자. 참고로 배열 메소드니까 당연하게도 유사배열에서는 사용하지 못한다. 1. 배열 메소드forEach 배열의 메소드로 forEach를 호출하는데, 인자로는 콜백함수를 전달해준다. 이 때 콜백함수의 첫 번째 파라미터로 배열 요소를 하나씩 순서대로 ..

JavaScript로 프로그래머스 풀기, 캐릭터의 좌표

(프로그래머스 1Lv, 캐릭터의 좌표) 내 풀이) key input은 최대 50이므로 for 문을 쓴대도 시간적인 제한은 없다. for 문으로 key input 원소들을 하나씩 받아와, 좌표 처리를 하면 되는 문제이다. 단, 좌표를 옮길 때 board 바깥으로 벗어나지 않게끔 케이스 처리를 해야 한다. 좀 더 깔끔한 코드를 위해 증감 연산자를 썼으며, 값을 먼저 계산한 다음 그 값이 board를 벗어나는지 아닌지 체크해야 하므로 ++--value 형식으로 코드를 썼다. 내 코드) function solution(keyinput, board) { let edgeRow = Math.floor(board[0] / 2); let edgeCol = Math.floor(board[1] / 2); let xLoc =..

JavaScript) 문자열을 자르는 메소드, substr, substring, slice

0. 문자열을 잘라보자. (참고로 문자열을 구분자 기준으로 잘라 배열로 만드는 메소드는 split 이다.) 자바스크립트에서 문자열을 자르기 위해 사용되는 메소드로는 크게 3가지가 있다. substr substring slice 세 메소드를 어떻게 쓰는 건지 잘 알아보자. 1. substr 메소드로 문자열 자르기. string = string.substr(start, length);substr 메소드는 파라미터가 2개이다. start 인자는 생략 불가능한 필수 파라미터이다. 시작 인덱스부터 시작해서 문자열을 자른다. length 인자는 생략 가능한 파라미터로, 생략하면 문자열 전체를 리턴, n을 쓰면 n 만큼 문자열을 자른다. let str = "hello javascript!"; str = str.sub..

JavaScript) 문자열을 잘라서 배열로 바꾸는 split 메소드

0. split 메소드 JavaScrip에서는 문자열을 자를 때에 split 메소드를 활용한다. 이번 시간에 어떻게 split 메소드를 잘 활용할 수 있을지, 메소드를 잘 알아보자. 1. split 메소드 기본 동작 split 메소드는 String 형 자료형에 쓰는 메소드이다. 인자로 받은 값을 구분자로 받아, 문자열을 구분자 기준으로 자른 후 배열에 저장하여 리턴해준다. let array = string.split(seperator, limit); 이 때 split 메소드의 인자는 두 개가 있는데, seperator: 구분자. seperator을 기준으로 문자열을 자름. 필수 값이 아니다!! limit: 최대 분할 갯수. 필수 값이 아니다!! EX 1. 파라미터를 아무 것도 입력하지 않을 경우. 문자열..

JavaScript로 프로그래머스 풀기, 숫자 문자열과 영단어.

프로그래머스 1레벨 2021 카카오 채용 연계형 인턴십 문제. 내 풀이) replace 메소드를 사용하면 간단하게 풀 수 있다. 문자열 길이가 최대 50이기 때문에, while이나 for 문으로 영단어를 찾는다 해도 시간 초과가 나지 않는다. 주의할 점) replace나 replaceAll 메소드를 쓸 때엔 s = s.replace(..,) 처럼 재할당 해주는 식으로 써야 한다. replaceAll 메소드를 생각지 못해 replace 메소드를 활용해 코드를 짰었는데, replaceAll을 기억해두자. 문자열 숫자가 아닌 글자가 있는지 판별하려면 isNaN 함수를 쓰자. if (isNaN(str)) {...} 내 코드) const enToNum = ["zero", "one", "two", "three", ..