전체 글

문제내용 풀이 🙍‍♂️ function solution(strings, n) { strings.sort((secondArg, firstArg) => { if (secondArg[n] 큰수)이므로 firstArg[n] 이 secondArg[n] 보다 클 경우 배열의 위치를 변경하도록 -1을 반환하고 둘의 값이 동일할 경우 if문을 한번 더 사용하여 문자열 ..
· JavaScript
sort? 정렬 메소드 아닌가?🤔 라고 생각했다가 코딩테스트 문제 풀다가 머릿속에 물음표로 가득찼다. 생각보다 sort는 복잡한 함수였고 오름차순 내림차순으로 정렬하는 법만 알았는데 아직 알쏭달쏭하지만 그래도 기존보다는 많이 알게됐다! sort는 compareFunction 라는 콜백함수를 인자로 받을 수 있는데 이는 법칙이 있다. sort는 비교할 때 기본적으로 a와 b 를 비교하면 a의 유니코드(U+0061), b의 유니코드(U+0062) 를 기준으로 비교하게 된다. 즉 a - b 를 하게된다면 음수가 나오게 되고 b는 a 보다 큰 요소로 확인된다. compareFunction 나는 위에 MDN에 적혀있는 내용이 이해가 안갔다. (혹시 쉽게 설명가능하신 분 댓글부탁드립니다.) compareFuncti..
값(value) 값은 식(표현식)이 평가되어 생성된 결과다. (평가란 식을 해석하여 값을 생성하거나 참조 하는 것을 의미) 모든 값은 데이터 타입을 가지며 메모리에 2진수, 비트의 나열로 저장된다. 메모리에 저장된 값은 데이터 타입에 따라 다르게 해석된다. (ex : 0100 0001 은 숫자로 해석하면 65, 문자로 해석하면 'A') 값은 다양한 방법으로 생성할 수 있다. ( 리터럴, 식 등) 리터럴(literal) 리터럴은 사람이 이해할 수 있는 문자 또는 약속된 기호를 사용해 값을 생성하는 표기법이다. 자바스크립트는 코드가 실행되는 시점인 런타임에 리터럴을 평가해 값을 생성한다. 표현식(expression) 표현식은 값으로 평가될 수 있는 문 이다. let score = 50 + 50; 50 + 5..
식별자란? 식별자는 어떠한 값을 구별해서 식별할 수 있는 고유한 이름을 말한다. (변수명, 함수명 등) 식별자 네이밍 규칙 let test; // O let $test; // O let _test; // O let 1test; // X 숫자로 시작 let &test; // X 특수문자 사용 let test!!!; // X 특수문자 사용 let this; // X 예약어 사용 식별자는 특수문자를 제외한 문자, 숫자, 언더스코어(_), 달러 기호($)를 포함할 수 있다. 단, 식별자는 특수문자를 제외한 문자, 언더스코어(_), 달러 기호($)로 시작해야 한다. 숫자로 시작하는 것은 X 예약어는 식별자로 사용할 수 없다. 예약어란 프로그래밍 언어에서 사용하는 단어를 말한다. 네이밍 컨벤션 네이밍 컨벤션은 하나..
문제내용 풀이 🙍‍♂️ function solution(n) { for (i = 2; i < n; i++) { if (n % i === 1) return i; } } /* (풀이) n의 제한사항은 3~1,000,000이므로 i를 2부터 시작해서 for문을 돌리고 나머지가 1이되는경우가 나오면 바로 i를 return 하고 반복문을 종료한다. 나머지가 1이 되는 자연수 x 를 다른 방법으로 할수는 없을까 고민해 봤는데 찾지 못했다🤔 */ 푸는 방식 자체는 괜찮게 잘 풀었지만 for문의 변수 i에 let,var 등 변수키워드를 달아줘야 하는 이유를 몰랐는데 이번에 알게됐으니 기록해보자. for문에서 let을 써줘야 하는 이유 var : 재선언 가능, 재할당 가능 ( 함수 레벨 스코프 ) let : 재선언 불가..
문제내용 서울에서 김서방 찾기 풀이 🙍‍♂️ function solution(seoul) { return `김서방은 ${seoul.indexOf("Kim")}에 있다`; } /* (풀이) indexOf 명령어로 Kim 을 찾아 템플릿리터럴을 이용해 바로 리턴해줬다. indexOf도 O(n)의 시간복잡도를 가지며 for문과 동일하고 for문에서 break을 이용해 결과를 찾으면 바로 빠져나오는 것과 동일하기에 가독성이 좋은 indexOf를 사용했다. */ 한줄로 잘 풀어낸것 같다 만족💪 문제내용 수박수박수박수박수 풀이 🙍‍♂️ function solution(n) { return n % 2 === 0 ? "수박".repeat(n / 2) : "수박".repeat(n / 2) + "수"; } /* (풀이) ..
초기화란 ? 초기화란 변수가 선언되고 최초로 값을 할당하는 것을 말하는데, 이 초기화 단계를 거치지 않으면 확보된 메모리 공간에는 이전에 다른 애플리케이션이 사용했던 값이 남아있을 수 있고 이 값을 쓰레기 값(garbage value)이라 한다. 따라서 메모리 공간을 확보한 후 값을 할당하지 않고 곧바로 변수 값을 참조하면 쓰레기 값이 나올 수 있다. var var은 ES6에서 let, const 키워드가 생기기 이전까지 유일한 변수선언 키워드였다. 이런 var에는 여러단점이 있는데 그 중 대표적인건 블록 레벨 스코프가 아닌 함수 레벨 스코프이기 때문이다. 이런 함수 레벨 스코프는 생각치 못한 오류로 이어질 수 있다. var score; //변수 선언 해당 코드는 변수를 선언만 한 상태이다. 변수에 값을..
The 3 Ls (Liked - Learned - Lacked) 회고 애자일 방법론에서 많이 사용하는 회고법 중 하나. Liked : 만족스러웠던 점 Leared: 깨달았거나 배웠던 점 Lacked: 당신이 놓쳤거나 부족했던 점 코딩테스트 회고는 앞으로 깨달았던 점을 중심으로 Liked와 Lacked 까지 작성할 예정이다. Learned 명확한 변수명과 코드의 효율을 고려하게 되었다. 시간복잡도 라는 코드의 효율을 계산하는 방법에 대해 배웠다. for문 뿐만 아니라 for of, for in 에 대한 사용방법을 깨달았다. 변수에 넣지 않고 깔끔하게 사용하는 법을 배웠다. 여러 내장 메소드들의 사용법이 머릿속에 저장됐다. Liked 정말 좋은 습관들이 많이 들었다. 노력도 하고있고 이런 블로그 기록도 처음..
YunCow
Jr Front-End 🦊