개발/알고리즘

    [알고리즘] 배열 안의 요소 비교

    문제 A와 B 배열이 있는데 B배열안의 요소들이 A배열 요소들의 제곱값인지 판별하는 함수를 만들어야한다. 예를 들면 same([1,2,3,2,5], [9,1,4,4,11]) // false same([1, 2, 3, 2], [9, 1, 4, 4]) // true (1) 1번 풀이 function same(arr1, arr2) { if (arr1.length !== arr2.length) { return false; } for (let i = 0; i < arr1.length; i++) { let correctIndex = arr2.indexOf(arr1[i] ** 2); if (correctIndex === -1) { return false; } arr2.splice(correctIndex, 1); } ..

    [알고리즘] 알고리즘 문제 풀이 순서

    1. 문제 이해하기 문제를 보고 어떠한 문제인지 이해하는게 가장 중요하다고 생각하다. 2. 구체적 예시 알아보기 (1) 간단한 예 생각하기 (2) 복잡한 예 생각하기 (3) 빈 입력값 입력하면 어떻게 되는지 (4) 유효하지 않은 값을 입력하면 어떻게 되는지 3. 코드작성전 문제를 세분화 하기 코드를 작성하기전 문제를 세분화해서 단계를 나누는것이다. 나는 각종 조건들을 나눈다고 생각한다. 예를 들어 객체에 숫자,문자이면서 키값이 존재하는지 -> count +1 객체에 숫자,문자이면서 키값이 없으면 -> 객체에 키 추가, count = 1 이런식으로 투박하게 조건들을 주석으로 달아놓음 4. 해결방법 단순화, 코딩 주석으로 달아놓은 방법들을 코딩 5. 리팩터링 시간복잡도를 따져보며 최적화

    [코딩테스트] 프로그래머스 문제모음

    1. 안전지대 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 폭탄 주변이 중복될수 있으니 중복제거를 위해 객체로 접근했다. (1) 1번 풀이 function solution(board) { const boomIndex = {}; for (let i = 0; i < board.length; i++) { for (let k = 0; k < board.length; k++) { if (board[i][k] == 1) { boomIndex[i - 1 + "" + (k - 1)] = 1; boomIndex[i - 1 + "" + k] = 1; boomIndex[i..

    [코딩테스트] 프로그래머스 문제 모음

    1. 양꼬치 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr function solution(n, k) { k = k - Math.floor(n/10) return 12000*n + 2000*k } 2. 369게임 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr function solution(order) { return order.toString().split("").filter((el)=>el==3||el..

    [코딩테스트] 프로그래머스 문제

    1. 최소직사각형 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr function solution(sizes) { sizes = sizes.map((el) => el.sort((a, b) => a - b)); len1 = sizes.sort((a, b) => b[0] - a[0])[0][0]; len2 = sizes.sort((a, b) => b[1] - a[1])[0][1]; return len1 * len2; } 2. 영어 끝말잇기 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기..

    [BigO] 객체와 배열

    1. 객체 빠른접근, 빠른제거에 좋다 정렬되어있지는 않지만 다른건 매우 빨드ㅏ. (1) Insertion(추가) : O(1) (2) Removal(제거) : O(1) (3) Searching(탐색) : O(N) (4) Access(접근) : O(1) 객체의 입력,제거,접근은 다 상수시간이다. 탐색은 n의 시간복잡도를 가진다. 2. 객체 메서드들 (1) Object.keys : O(N) (2) Object.values : O(N) (3) Object.entries : O(N) (4) hasOwnProperty : O(1) 3. 배열 객체와의 가장 큰 차이는 정렬을 할 수 있다는 것이다. (1) Insertion(추가) : It depends(상황에 따라) (2) Removal(제거) : It depends..