728x90

javascript 11

[Algorithm] 소수찾기 (에라토스테네스의 체)

코딩테스트의 정말 큰 문제점이 뭐냐면, 했던 걸 계속 까먹는다는거다. 내가 짱구를 굴려서 풀었으면 그 이후에 풀 때도 짱구를 굴려서 풀 수 있을건데, 도저히 솔루션을 못찾겠어서 타인의 정답을 참고하게 되면 이런 문제가 생긴다. 그 이유가 뭐냐면, 실제로 사용되는 수학적 개념들을 요구하는 문제가 있기 때문인데 이 대표적인 예가 최대공약수, 최소공배수찾기, 에라토스테네스의 체를 활용해 소수찾기 같은 문제들이 그렇다. 앞선 게시물에서 이 내용들을 언급했음에도 또 내가 이걸 작성하는 이유는 내가 저것들을 봤음에도 불구하고 까먹었기 때문이다. ㅎㅎ.. 사실 앞선 게시물에서는 제대로 이해했다기보단 솔루션 저장소같은 느낌으로 모르겠으면 또 보려고 쓴거라, 이번엔 제대로 이해한 내용 그대로 작성해볼 예정이다. 1. 소..

Dev/Algorithm 2023.08.02

[JavaScript] BigInt

요즘 하반기 공채시즌이 열려서 중고신입 개발자 뽑는 공채에 미친듯이 지원을 하고 있다. 당연히 신입공채기 때문에 코딩테스트에 응시를 해야하는 경우가 대부분이라 요즘 코테 공부에 심혈을 기울이고 있다. 그러다 오늘 생각도 안했던 문제를 발견해서 기록을 남겨둔다. Number 지금껏 내가 착각하고 있었던게 있는데, Java를 기준으로 생각해서 착각했던것 같다. 다들 알다시피 Int타입에는 메모리적으로 한계가 있다. 이런 한계를 극복하고자 한다면 Long이나 BigDecimal을 사용하는 방향을 채택했었는데 이것만 생각하다보니 자바스크립트의 원시타입중에 하나인 Number는 걍 다 되는 줄 알았다. 왜냐면 숫자를 표현하는 타입이 저거뿐인줄 알았으니까... 근데 놀랍게도 이 Number 타입도 한계가 있다. 찾..

Dev/JavaScript 2023.07.25

[JavaScript] Symbol

이번엔 Symbol에 대한 이야기를 할건데, 이게 진짜 난 도저히 엇다써야할지 감이 안 잡혀서 이해가 좀 힘들었다. 그냥 아무리 생각해도 ES6로 넘어오면서 언어 자체에 들어가있는 built-in 기능들을 위한 타입이지 않나? 정도 밖엔 감을 못잡았는데, 대충 정리해보면 그래도 JS 개발자가 조금씩 사용할 수 있는 것들이 존재하긴한다. 또한, 우리가 당연하게 사용하고 있던 것들 역시 Symbol로 정의 되어있기 때문에 알고 있으면 JS에 대한 깊은 이해에도 도움이 될 것으로 생각한다. 1. Symbol이란? Symbol은 ES6부터 JavaScript에 추가된 타입으로, 좀 특이한 녀석이다. 사용의 목적은 Property들의 충돌을 방지하기 위해 고유한 Property를 만드는 용도로 사용된다. 이런 식..

Dev/JavaScript 2023.07.17

[JavaScript] iterable / iterator

오늘은 iterable(이터러블), iterator(이터레이터)에 대한 이야기를 한번 해볼건데, 배열이나, Map과 같은 순회가능한 객체들을 다룬다면 이 개념에 대한 이해를 가지고 있는 편이 좋다. 대부분 학원에서는 for / while문을 사용하면 요소하나하나 꺼내쓸 수 있다. 이렇게만 가르쳐주게 되는데, 이게 그냥 초반 입문 시기나 개발을 취미로 하는 입장에서는 전혀 문제될게 없으나 좀 더 전문적인 영역으로 진출하고자 하는 인재들에게는 이 개념의 존재를 알고 있는게 차후 Object에서 Custom Iterator를 적용한다던가 같은 응용이 가능하기 때문에 기왕이면 학습해두길 권하고 싶다. 1. Iterable Protocol & Iterator Protocol 왜 또 Protocol같은 거슬리는 워..

Dev/JavaScript 2023.07.17

[JavaScript] ProtoType (2)

저번에 정리하다가 만 ProtoType에 대한 정리를 오늘 마칠 셈인데, 아무래도 분량이 꽤나 되다보니 어느정도 축약을 할 내용이다. 사실상 대부분의 내용이 논리적으로 당연한 내용들이라고 볼 수 있기 때문에, 꼭 필요하다 싶은 개념정도만 정리해두고 나중에 필요하면 내용을 추가하는 방식이 될 것 같다. ProtoType Chain 앞선 ProtoType(1) 게시물의 링크를 걸어두겠다. 2023.07.05 - [Dev/JavaScript] - [JavaScript] ProtoType (1) [JavaScript] ProtoType (1) 대망의 ProtoType이다. 대부분 학원 출신 개발자들은 Java를 통해 개발에 입문을 하는 케이스가 많다보니, 아무래도 Class 기반의 객체를 익숙하게 여길텐데, 놀..

Dev/JavaScript 2023.07.13

[코딩테스트] 안전지대

이번에 만난 문제가 lv.0 최고 어려운 문제 아닐까...? 정답률 30% 대도 있긴한데 계속 정답률 높은거만 풀어봐서 뭔가 한계에 부딪혀버렸다. 아무리 해도 안돼서 결국 구글링 했는데 진짜 하나하나 다 설정해두고 찾아야하는 거였다. (코테는 편한 길이 없나봐... 내 코드가 아니니 출처 남기고 기록 해둬야지..) 출처 : https://leejams.github.io/%EC%95%88%EC%A0%84%EC%A7%80%EB%8C%80/ function solution(board) { // 위, 아래, 좌, 우, 대각선 칸 확인을 위한 셋팅입니다. const dx = [1, 0, -1, 0, 1, 1, -1, -1]; const dy = [0, 1, 0, -1, 1, -1, 1, -1]; // 정사각형이기..

Dev/Algorithm 2023.05.19

[JavaScript] Hoisting

학원에서 자바스크립트를 처음 배우던 시점에 Hoisting을 가르쳐줬었던 것으로 기억한다. 그 때는 애초에 수강생들이 코딩의 ㅋ 정도 겨우 알아가는 과정이라 알려줘봐야 제대로 이해할 리가 만무하니 그냥 선언하기 전에 실행시켜도 나중에 뒤에서 선언만 해주면 문제가 없다. 라는 식으로 알려줬었는데, 이번에 블로그 쓰기 시작하면서 제대로 정리해야겠다는 생각이 들어 작성한다. Hoisting (호이스팅) 이란 무엇인가? 공식적인 설명은 "인터프리터가 변수와 함수의 메모리 공간을 선언 전에 미리 할당하는 것 " 을 의미한다. 하지만 우리는 이 말로는 절대 이해할 수 없다. 그래서 일반적으로 잘 풀어서 쉽게 설명하는 경우를 가져오면 "변수와 함수의 선언과 초기화를 분리한 후, 선언만을 코드의 최상단으로 옮기는 것"..

Dev/JavaScript 2023.04.20

[JavaScript] Scope & Closure

순서가 조금 잘못된 것 같긴한데, 어쩔 수 없다고 생각한다. 체계적으로 공부를 해서 기초부터 차근차근 닦아올려가며 일을 하게 된 것이 아니라 당장 오늘 이 코드를 작성하지 못하면 큰일난다는 생각으로 언제나 목에 칼이 들어온 기분으로 코드를 만들어가며 체득하는 신입 SI 개발자는 이런 체계적인 용어? 개념적인 지식? 그런거 모르기 때문에 아 내가 지금까지 써온 이런게 이런 이름이구나~ 라며 깨닫기 마련이다. 오늘은 이런 식으로 깨달은 Scope 와 Closure 기법에 대한 이야기를 해보고자 한다. 1. Scope (유효범위) Scope는 유효범위를 의미한다. 정의나 설명을 통해 이야기하면 누구나 한번에 이해하긴 힘들다. 하지만 일단 이런거다 정도는 알고 있어야하니 정리해보자. 함수, 변수를 선언 했을 때..

Dev/JavaScript 2023.04.20

[코딩테스트] 직각삼각형 출력하기

하다가 정말 어려웠던 것만 블로그에 글을 남길 생각이었는데 벌써 세개째 쓰고 있다. 이건 로직 자체가 어려운건 아닌데 기본 코드 세팅이 롸..? 하게 만드는 상태라 기록해두려고 한다. 문제 : 직각삼각형 출력하기 문제 설명 "*"의 높이와 너비를 1이라고 했을 때, "*"을 이용해 직각 이등변 삼각형을 그리려고합니다. 정수 n 이 주어지면 높이와 너비가 n 인 직각 이등변 삼각형을 출력하도록 코드를 작성해보세요. 제한사항 1 ≤ n ≤ 10 const readline = require('readline'); const rl = readline.createInterface({ input: process.stdin, output: process.stdout }); let input = []; rl.on('l..

Dev/Algorithm 2023.04.14

[코딩테스트] 최빈값 구하기

이 문제 상당히 난감했다. 해답을 보고도 아하! 라며 바로 이해하기 보단 한줄한줄 따라가며 읽어야지만 눈에 들어와서 따로 디테일한 공부 없이 뇌빼고 코딩했던 나같은 사람들한테는 진입장벽이 조금 높을 수도 있겠다는 생각이 들었다. 문제 : 최빈값 구하기 문제 설명 최빈값은 주어진 값 중에서 가장 자주 나오는 값을 의미합니다. 정수 배열 array가 매개변수로 주어질 때, 최빈값을 return 하도록 solution 함수를 완성해보세요. 최빈값이 여러 개면 -1을 return 합니다. 제한사항 0 { m.set(item, (m.get(item) || 0) + 1); }) m = [...m].sort((a,b) => b[1] - a[1]); return m.length === 1 || m[0][1] > m[1..

Dev/Algorithm 2023.04.14
728x90