개요 - 앞선 문제들 중에 주어진 자료형을 보기 좋은 객체로 바꿔주면 문제가 수월히 풀리는 것들이 있어, 우선 이중배열을 보기 쉬운 객체의 형태로 치환함 - 그 외에는 스택의 기본 구조만 활용하면 되는 것 같아 크게 어려움 없을 듯 (조건에 맞춰 분기만 잘하면..) JS CODE - 내 풀이 function solution(board, moves) { const board_obj = {}; for (let i = 1; i { let board_pop = board_obj[value].pop(); if (board_pop) { if (basket.legnth == 0) { basket.push(board_pop); } else { let last_one = basket[basket.length - 1]; ..
개요 - 분명 언젠가 거의 흡사한 문항을 백준에서 푼 기억이 있는데 하하... 다 까먹었다 - 포스팅하지는 않았지만 다른 카카오 코테 문항에도 정규표현식이 필수적인 문항이 있었는데, 우테코가 일주일 남은 시점 정규표현식 공부를 해야하나 고민이 많다. - 이 문제는 심플하지만, 메서드를 정확히 알고 있어야 풀 수 있는 듯하다. (정규표현식을 사용하지 않는 경우에) 접근 - 제시된 문자열을 선형검색하며 영단어 문자열과 일치하는 경우 치환해주는 정석적인 알고리즘을 생각했지만 구현이 쉽지 않음 JS CODE - 프로그래머스 우수 풀이 function solution(s) { const num_list = ['zero', 'one', 'two', 'three', 'four','five', 'six', 'seven..
개요 - 자바스크립트로 풀이하는 첫번째 알고리즘 문항 - 프로그래머스에서 감을 좀 쌓고 백준에서 난이도별로 풀어보는 것이 좋을 듯하다. - 첫 문제를 풀며 느낀 점은 객체 짜기의 중요성인데, 가장 효율적이고 깔끔한 형태의 객체를 짜면 일단 뭐든 보이는 느낌 - 메서드 적응 훈련이 필요함. 책만 보다 막상 적용하려니 바로바로 안튀어나온다. 자주 쓰이는 건 노션에 넣고 정리하자 객체 짜는 코드 const userList = id_list.reduce((result, currentId) => { result[currentId] = [0, []]; return result; }, {}) 1. Array.prototype.reduce 메서드인데, 이런 식으로 활용이 가능하다. 2. 문제를 처음 봤을 때 객체의 프..
https://www.acmicpc.net/problem/1946 1946번: 신입 사원 첫째 줄에는 테스트 케이스의 개수 T(1 ≤ T ≤ 20)가 주어진다. 각 테스트 케이스의 첫째 줄에 지원자의 숫자 N(1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개 줄에는 각각의 지원자의 서류심사 성 www.acmicpc.net 개요 업로드 한지 거의 한 달 반이 다 되어 가는데, 코딩에 손을 놓은 건 아니고 알고리즘을 잠시 뒤로하고 자바스크립트와 장고 공부를 하고 있다. 한 가지 우물만 너무 깊게 파고 있다는 생각이 들어서 시작한 공부들인데, 양이 생각보다 많아 기존에 생각하던 알고리즘 병행은 조금 힘들어졌다. 집중이 너무 안돼서 오래간만에 접속해 한 문제를 풀어봤는데, 그리 오랜 시간이 지나지 않..
union-find란? - 서로소로 이루어진 부분 집합들의 상관관계를 이용하여 효율적인 상관관계(각 집합 별 루트 노드를 갖도록)를 이루도록 하는 알고리즘 - union 연산 : 연결된 노드를 확인해 하나의 집합(트리)로 합치는 연산 - find 연산 : 각 집합이 어떤 값과 연관되어 있는지 찾는 연산(루트 노드를 찾아주는 연산) - find 연산을 집합의 정의로 해석하면 어떤 집합에 속해있는지 찾아주는 연산이라 정의 가능 추상적 구현 - union 함수는 두 원소를 값으로 갖는다. 인수로 받은 원소들을 find 함수를 이용해 루트 노드의 값을 얻고, 크기 비교를 통해 값을 갱신. (ex - [1, 4]의 값을 입력받았는데 4의 루트 노드가 2라면, 1과 2를 연결해주기 위해 tree[2] = 1 연산)..