문제 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 알고리즘 & 자료구조 완전 탐색 (Brute Force) - 순열 BFS 비트 마스킹 (Bit Masking) 로직 아래 유튜브 영상을 참고하여 코드를 작성했습니다. 너무 어려워서 스스로의 힘으로 해결하지 못했거든요..😅 먼저 존재하는 카드 값에 따른 비트 마스킹을 수행합니다. 예를 들어, 1부터 3까지의 카드가 있다면 1111(15)이 되겠죠. (0의 비트는 기본으로 1로 설정합니다) 이때 비트 1을 카드가 제거된 상태로 정의하여, 카드 제거시 해당 비트를 1로 변환하고 모든 카드 값에 대한 비트가 모..
You'll Never Walk Alone.
테크/알고리즘
문제 코딩테스트 연습 - 가사 검색 programmers.co.kr 알고리즘 & 자료구조 트라이(Trie) 로직 const forwardRoot = new Map(); const backwardRoot = new Map(); 정방향, 역방향 트라이(trie) root를 생성합니다. 각 root는 문자열의 길이를 key, 트라이를 value로 하는 Map 객체입니다. root를 Map으로 표현하므로써 문자열의 길이로 트라이에 접근하여 더 효율적으로 문제를 해결할 수 있습니다. words.forEach((word) => { insertTrie(word, forwardRoot); insertTrie(word.reverse(), backwardRoot); }); 주어진 단어들을 트라이에 삽입합니다. insert..
안녕하세요 동쪽별입니다. 친구들과 알고리즘 스터디를 진행하면서 매주 다섯 문제씩 풀고 있는데요. 오늘부터 매주 해결한 문제 중 가장 어려웠던 문제 하나를 꼽아 리뷰하려 합니다 😁 (개인적으로 어려웠던 문제가 더 있다면 두개 이상 올릴거에요) 어려운 문제인 만큼 여러 사람들에게 도움을 줄 수 있겠다 싶었거든요. 더군다나 자바스크립트로 풀었기에..! 문제 코딩테스트 연습 - 자물쇠와 열쇠 [[0, 0, 0], [1, 0, 0], [0, 1, 1]] [[1, 1, 1], [1, 1, 0], [1, 0, 1]] true programmers.co.kr 로직 1. 주어진 lock의 홈 패턴을 구합니다. 여기서 패턴이란 하나의 홈에서 나머지 홈까지의 거리만을 구하여 저장해놓는 것을 의미합니다. lock을 순회하며 ..
안녕하세요. 동쪽별입니다. 이번 포스트에서는 여러 정렬 알고리즘에 대해 살펴보고, 자바스크립트로 구현해보도록 하겠습니다. 목차 거품 정렬(Bubble Sort) 선택 정렬(Selection Sort) 삽입 정렬(Insertion Sort) 퀵 정렬(Quick Sort) 병합 정렬(Merge Sort) 힙 정렬(Heap Sort) 계수 정렬(Counting Sort) 기수 정렬(Radix sort) 시작하기 전에 먼저, 정렬의 Stable 정렬과 In-place 정렬에 대해 알고 갑시다! Stable 정렬? 정렬을 했을 때 중복된 값들의 순서가 변하지 않는 것을 말합니다. 만약, arr = [1, 7(1), 3, 5, 4, 7(2), 9] 을 정렬한 결과가 arr = [1, 3, 4, 5, 7(1), 7(..
안녕하세요. 동쪽별입니다. 최근 2022 카카오 채용연계형 인턴십에 지원했기에 작년 문제들을 풀어봤어요. 너무 어려웠습니다... 몇 문제들은 도저히 해결하지 못해 다른 사람의 문제 접근 방법을 참고했어요. 그래서 저도 어려웠던 문제들에 대해 자바스크립트로 구현한 코드를 공유해보려 합니다. [81303] 표 편집 코딩테스트 연습 - 표 편집 8 2 ["D 2","C","U 3","C","D 4","C","U 2","Z","Z"] "OOOOXOOO" 8 2 ["D 2","C","U 3","C","D 4","C","U 2","Z","Z","U 1","C"] "OOXOXOOO" programmers.co.kr Linked List 를 이용했습니다. 먼저 0 부터 차례대로 n-1 까지 연결하는 양방향 연결 리스트..