최신 글 js sort 메서드 숫자 정렬 이해하기(compareFunction), 프로그래머스 정렬-레벨1-가장 큰 수 js sort 메서드 숫자 정렬 이해하기(compareFunction), 프로그래머스 정렬-레벨1-가장 큰 수 자바스크립트 프로그래머스의 정렬 1레벨 가장 큰 수 문제를 풀면서 sort 메서드를 사용하게 되었다. sort 메서드를 사용할 때 항상 comparefunction을 넣어서 사용했었는데 숫자 내림차순, 오름차순 정렬을 할 때 어떤 원리로 정렬이 되는 것인지 제대로 이해해보기 위해서 여기에 정리해본다. 이전에도 한번 정리했었는데 한동안 사용하지 않으니 헷갈린다. 특히나 가장 큰 수 정렬 문제를 할 때 처음에는 배열의 모든 요소를 조합하는 알고리즘을 사용해야 한다고 생각했었는데 정렬만을 이용해서 쉽게 구현할 수 있다는 것을 알게 되었고 그러기 위해서는 sort 메서드 내의 comparefunction을 제대로 이해하고 조작할 수 있어야 했다. # sort() array.sort([compareFunction.. 댓글 0 2021.07.03 Data structures & Algorithms with JavaScripts 스터디 14~15일차 Data structures & Algorithms with JavaScripts 스터디 14~15일차 210606 일요일 13~14일차 (인턴하면서 퇴근 후 조금씩 스터디하고 일요일에 복습하면서 진도를 나감) # 12~13일차 복습 CH6 연결 리스트 - 배열의 단점 : 대부분 프로그래밍 언어에서는 배열이 꽉 차면 데이터를 입력하기가 어렵다. 데이터를 추가하거나 삭제할 때도 나머지 요소를 이동해야 하므로 어려움이 따른다. 자바스크립트는 배열의 split()을 이용하면 간단하다. 하지만 자바스크립트의 배열은 객체라서 C++이나 자바보다 배열의 효율이 떨어진다. 따라서 배열이 너무 느리다고 판단되면 사용할 수 있다. 다만 임의의 요소에 접근해야 할 때는 연결리스트보다 배열이 낫다. - 연결 리스트 정의 : node라 불리는 객체가 모여 연결 리스트를 구성한다. 각 노드는 객체 레퍼런스를 통해 리스트의 다른 .. 댓글 0 2021.06.06 Data structures & Algorithms with JavaScripts 스터디 12~13일차 Data structures & Algorithms with JavaScripts 스터디 12~13일차 210519 토요일 12~13일차 (인턴하면서 퇴근 후 조금씩 스터디하고 토요일에 복습하면서 진도를 나감) # 9~11일차 복습 CH5 큐 - 큐는 리스트의 일종으로 끝부분으로 데이터가 삽입되고 앞부분에서 데이터가 삭제되는 구조이다. 일어난 순서대로 데이터를 저장하지만 스택과 반대로 먼저 들어온 순서대로 처리한다. 선입선출. - enqueue는 큐의 끝부분에 요소 추가, dequeue는 큐의 앞부분에 요소 삭제, 큐의 앞부분 요소를 확인하는 peek, 요소 개수를 확인하는 length, 전체 요소를 삭제하는 length, front()는 맨 앞의 요소, back()은 맨 뒤의 요소를 보여준다. function Queue() { this.dataStore = []; this.enqueue = enqueue.. 댓글 0 2021.05.30 Data structures & Algorithms with JavaScripts 스터디 9~11일차 Data structures & Algorithms with JavaScripts 스터디 9~11일차 210519 수요일 9~11일차 # 8일차 복습 CH3 리스트 - #1 : 현재 리스트의 모든 요소보다 클 때만 요소를 삽입하는 함수를 구현하시오. 여기서 크다는 의미는 숫자일 때는 크기를 비교하고, 텍스트일 때는 알파벳순으로 나중을 의미한다. 현재 리스트의 모든 요소보다 클 때라는 조건을 만족하는 지 확인하기 위한 함수를 만들었다. 모든 요소보다 크면 true, 큰 요소가 존재할 시 중간에 false를 반환해주는 함수를 구현했다. 먼저 삽입하고자 하는 요소 (after)를 find함수로 찾아서 인덱스를 받은 다음 인덱스가 존재한다면 그 위치에 slice함수를 이용해서 삽입하였다. 삽입 후에는 listSize를 1 증가시킨다. - #2 현재 리스트의 모든 요소보다 작을 때만 요소를 삽입하는 함수를 구현하.. 댓글 0 2021.05.20 [Javascript] for 문, for in 문, for of 문 [Javascript] for 문, for in 문, for of 문 - for 문 for 문은 while 문과 달리 초기식, 표현식, 증감식을 포함하는 반복문이다. 따라서 while 문보다는 간결하게 반복문을 표현할 수 있다. for ( 초기식 ; 조건식 ; 증감식 ) { 조건식의 결과가 참인 동안 반복적으로 실행하고자 하는 실행문; } for 문의 초기식, 조건식, 증감식은 각각 생략될 수 있다. 또한, 쉼표 연산자를 이용하면 여러 개의 초기식이나 증감식을 동시에 사용할 수 있다. - for in 문 for / in 문은 일반적인 for 문과 전혀 다른 형태이다. 해당 객체의 모든 열거할 수 있는 프로퍼티(enumerable properties)를 순회할 수 있게 해준다. 이 반복문은 루프마다 객체의 열거할 수 있는 프로퍼티의 이름을 지정된 변수에 대입한다. 이렇게 대.. 댓글 0 2021.05.17 이전다음 알고리즘 [CodingTest]프로그래머스 파일명 정렬 # 시작 알고리즘 스터디 12월 넷째주 과제 2번째 문제다. 정렬 문제라서 여행 경로보다는 익숙한 것 같다. img1.png와 img12.png, img2.png가 있을 때 img1.png, img2.png, img.12.png 순으로 정렬되는 것이 순서상으로 자연스럽다는 것인데, 이를 위해서 파일명에 포함된 숫자를 반영한 정렬 기능을 구현해야 한다. # 문제 세 차례의 코딩 테스트와 두 차례의 면접이라는 기나긴 블라인드 공채를 무사히 통과해 카카오에 입사한 무지는 파일 저장소 서버 관리를 맡게 되었다. 저장소 서버에는 프로그램의 과거 버전을 모두 담고 있어, 이름 순으로 정렬된 파일 목록은 보기가 불편했다. 파일을 이름 순으로 정렬하면 나중에 만들어진 ver-10.zip이 ver-9.zip보다 먼저 표.. 2020.12.28 [CodingTest] 프로그래머스 여행 경로 dfs # 시작 지난 주 자바스크립트 알고리즘 스터디를 들어갔다. 이전까지만 해도 자바로 프로그래머스 1단계를 풀었었는데 지금 들어가보니 1100점 정도의 점수였다. 1단계였기 때문에 실력적으로 뛰어나지 않은데 생각보다 점수가 높았다. 프로그래머스 2단계를 선택해서 문제를 풀게 된 이유는 스터디에서 이미 한달 전부터 1단계를 다 풀고 2단계를 진행중이였기 때문이다. 한동안 알고리즘 공부를 안해서 적응하기 굉장히 힘들겠다는 생각이 들었다. 이 문제는 알고보니 3단계 문제였고, 총 3문제 중에 1문제만 2단계고 나머지는 3단계였다. 스터디에서 11월 11일까지 풀어야 했던 문제가 내가 풀어봤던 1단계 문제였다. 스터디는 매주 3문제씩 과제를 풀어야 하는데 진도 차이가 어마어마해서 큰일이다. 깃헙에서 리드미 파일로 .. 2020.12.25 프로젝트 React 타입스크립트