흔한 코딩 블로그

: Web Developer & Data Scientist
알고리즘/구현

[JavaScript] 2019 KAKAO 크레인 인형뽑기

개요 - 앞선 문제들 중에 주어진 자료형을 보기 좋은 객체로 바꿔주면 문제가 수월히 풀리는 것들이 있어, 우선 이중배열을 보기 쉬운 객체의 형태로 치환함 - 그 외에는 스택의 기본 구조만 활용하면 되는 것 같아 크게 어려움 없을 듯 (조건에 맞춰 분기만 잘하면..) 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]; ..

알고리즘/구현

[JavaScript] 2021 KAKAO 숫자 문자열과 영단어

개요 - 분명 언젠가 거의 흡사한 문항을 백준에서 푼 기억이 있는데 하하... 다 까먹었다 - 포스팅하지는 않았지만 다른 카카오 코테 문항에도 정규표현식이 필수적인 문항이 있었는데, 우테코가 일주일 남은 시점 정규표현식 공부를 해야하나 고민이 많다. - 이 문제는 심플하지만, 메서드를 정확히 알고 있어야 풀 수 있는 듯하다. (정규표현식을 사용하지 않는 경우에) 접근 - 제시된 문자열을 선형검색하며 영단어 문자열과 일치하는 경우 치환해주는 정석적인 알고리즘을 생각했지만 구현이 쉽지 않음 JS CODE - 프로그래머스 우수 풀이 function solution(s) { const num_list = ['zero', 'one', 'two', 'three', 'four','five', 'six', 'seven..

알고리즘/구현

[JavaScript] 2022 KAKAO 신고 결과 받기

개요 - 자바스크립트로 풀이하는 첫번째 알고리즘 문항 - 프로그래머스에서 감을 좀 쌓고 백준에서 난이도별로 풀어보는 것이 좋을 듯하다. - 첫 문제를 풀며 느낀 점은 객체 짜기의 중요성인데, 가장 효율적이고 깔끔한 형태의 객체를 짜면 일단 뭐든 보이는 느낌 - 메서드 적응 훈련이 필요함. 책만 보다 막상 적용하려니 바로바로 안튀어나온다. 자주 쓰이는 건 노션에 넣고 정리하자 객체 짜는 코드 const userList = id_list.reduce((result, currentId) => { result[currentId] = [0, []]; return result; }, {}) 1. Array.prototype.reduce 메서드인데, 이런 식으로 활용이 가능하다. 2. 문제를 처음 봤을 때 객체의 프..

백준/DFS (깊이 우선 탐색)

[Python] 백준, 16234(DFS)

https://www.acmicpc.net/problem/16234 16234번: 인구 이동 N×N크기의 땅이 있고, 땅은 1×1개의 칸으로 나누어져 있다. 각각의 땅에는 나라가 하나씩 존재하며, r행 c열에 있는 나라에는 A[r][c]명이 살고 있다. 인접한 나라 사이에는 국경선이 존재한다. 모 www.acmicpc.net 개요 - 해결법을 고민하다 DFS/BFS 문항이라는 걸 알았다. (감 유지할 겸 아무거나 풀어서 분류를 몰랐다) - 문제가 혼란스러우나 나름 논리적이다. - x, y 설정이 난잡하다. 이 문제의 경우 가로, 세로의 배열 길이가 같아서 기준을 어떻게 잡던 상관이 없었지만, 조금 복잡한 문제를 다룰 때는 이 부분을 유의해야 할 것 같다.(풀 때마다 다른 거 같은 느낌) - 마무리가 낯설..

알고리즘/구현

[Python] 백준, 1946

https://www.acmicpc.net/problem/1946 1946번: 신입 사원 첫째 줄에는 테스트 케이스의 개수 T(1 ≤ T ≤ 20)가 주어진다. 각 테스트 케이스의 첫째 줄에 지원자의 숫자 N(1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개 줄에는 각각의 지원자의 서류심사 성 www.acmicpc.net 개요 업로드 한지 거의 한 달 반이 다 되어 가는데, 코딩에 손을 놓은 건 아니고 알고리즘을 잠시 뒤로하고 자바스크립트와 장고 공부를 하고 있다. 한 가지 우물만 너무 깊게 파고 있다는 생각이 들어서 시작한 공부들인데, 양이 생각보다 많아 기존에 생각하던 알고리즘 병행은 조금 힘들어졌다. 집중이 너무 안돼서 오래간만에 접속해 한 문제를 풀어봤는데, 그리 오랜 시간이 지나지 않..

알고리즘/구현

[Python] union-find

union-find란? - 서로소로 이루어진 부분 집합들의 상관관계를 이용하여 효율적인 상관관계(각 집합 별 루트 노드를 갖도록)를 이루도록 하는 알고리즘 - union 연산 : 연결된 노드를 확인해 하나의 집합(트리)로 합치는 연산 - find 연산 : 각 집합이 어떤 값과 연관되어 있는지 찾는 연산(루트 노드를 찾아주는 연산) - find 연산을 집합의 정의로 해석하면 어떤 집합에 속해있는지 찾아주는 연산이라 정의 가능 추상적 구현 - union 함수는 두 원소를 값으로 갖는다. 인수로 받은 원소들을 find 함수를 이용해 루트 노드의 값을 얻고, 크기 비교를 통해 값을 갱신. (ex - [1, 4]의 값을 입력받았는데 4의 루트 노드가 2라면, 1과 2를 연결해주기 위해 tree[2] = 1 연산)..

백준/DFS (깊이 우선 탐색)

[Python] 백준, 2583(DFS)

https://www.acmicpc.net/problem/2583 2583번: 영역 구하기 첫째 줄에 M과 N, 그리고 K가 빈칸을 사이에 두고 차례로 주어진다. M, N, K는 모두 100 이하의 자연수이다. 둘째 줄부터 K개의 줄에는 한 줄에 하나씩 직사각형의 왼쪽 아래 꼭짓점의 x, y좌표값과 오 www.acmicpc.net * 골드 랭크로 승급하게 해 준 고마운 문항. 아직 그 정도 실력은 아닌 것 같지만 나름 뿌듯하다. 개요 - 자료구조가 조금 독특하다. 리스트를 어떻게 설정해야 하는지 고민을 조금 했는데, 구체적인 좌표는 그리 중요하지 않다는 걸 조금 늦게 깨달았다. - 이제 dfs 알고리즘도 조금 익숙해진 것 같다. 함수의 틀은 문제별로 거의 고정인 것 같고, 응용하는 포인트들에서 차이가 나..

백준/DFS (깊이 우선 탐색)

[Python] 백준, 10026(DFS)

https://www.acmicpc.net/problem/10026 10026번: 적록색약 적록색약은 빨간색과 초록색의 차이를 거의 느끼지 못한다. 따라서, 적록색약인 사람이 보는 그림은 아닌 사람이 보는 그림과는 좀 다를 수 있다. 크기가 N×N인 그리드의 각 칸에 R(빨강), G(초록) www.acmicpc.net 개요 - 1, 0과 같은 단순한 원소들로 이루어진 전형적인 자료구조를 탈피한 첫 번째 문항인 것 같다. 따라서 추가적인 조건문의 계산만 더해주면 되므로 사실상 그리 복잡하지는 않다. - dfs 함수에 부가적인 기능을 넣고 싶지 않아서 답을 도출하는 이중 for문을 조금 길게 작성했다. - 재귀를 이용하는 dfs에 약하다고 판단해서 스택은 고려하지 않고 푸는 중인데, 맞은 사람 중 런타임이 ..

Martin Hoffman
LazyLock’s