: Web Developer & Data Scientist
알고리즘/완전탐색

[JavaScript] Programmers 모의고사

개요 - 코드를 작성하면서도 이것보다 짧고 확실한 코드가 분명 있겠다 확신함... - 나머지를 구해 인덱스를 활용하는 방법을 생각 못하고 배열을 복제하여 따질 생각한 것부터 코드가 길어진 원인 - 정답을 맞힌 배열에서 sort로 맞힌 사람을 나열하려 했는데 이 또한 두 번째 원인 - 하나하나 보면 그동안 익힌 메서드들을 나름 자연스레 써먹은 모습인데 전체적으로 봤을 때는 그저 과해보인다. JS CODE (1) - 내 코드 function sos(answers) { const answer1 = { list: [1, 2, 3, 4, 5], length: 5 }; const answer2 = { list: [2, 1, 2, 3, 2, 4, 2, 5], length: 8 }; const answer3 = { l..

알고리즘/해시

[JavaScript] Programmers 베스트 앨범

개요 - 난잡하게 풀었다. 가장 확실하지만 그만큼 무식하기도 한 풀이. - 객체의 정의는 주요 객체인 genre_obj로 정의했으며, 인덱스와 플레이타임 객체를 요소로 갖는 배열이 프로퍼티 값. genre_obj = {classic: [ {idx:--, play_time: --} ...], pop: [...]}; - sort 메서드를 이용해서 play_time 순으로 내림차순해준다. (이때 비교함수 작성시, return 값을 지정 안해주면 적용 안됨 주의하자) - sum_arr 배열이 장르 정보와 플레이시간 총합을 객체의 형태로 담고 있도록 한 후, 마찬가지로 sort 메서드를 통해 내림차순 해준다. - sum_arr 배열의 요소들을 key값으로 genre_obj의 요소들을 조건에 맞게 꺼내어 answe..

알고리즘/해시

[JavaScript] Programmers 위장

개요 - 이제 좀 알거같은데. 의상은 중복이 되지 않으므로 갯수만 중요해진다. 다루기 편한 객체로 변경하는 작업 진행 - 답은 구하는 게 아차 싶은데, 확률과 통계를 다 까먹어서 좀 헤맸다. JS CODE (1) - 내 풀이 function solution(clothes) { let answer = 1; const clothes_obj = clothes.reduce((result, value) => { result[value[1]] = result[value[1]]? result[value[1]] + 1 : 2; return result; }, {}); for (let key in clothes_obj) { answer *= clothes_obj[key]; } return answer - 1; } - r..

알고리즘/해시

[JavaScript] Programmers 완주하지 못한 선수

개요 - 문제는 굉장히 심플하며 풀이를 향한 길 또한 그리 다양하지 않아 보인다. - 해시 : 데이터를 다루는 기법 중 하나로, 검색과 저장을 아주 빠르게 진행함(대표적으로 Map 객체) + 데이터를 저장할 때 key-value형태로 데이터가 존재하고, key값이 배열의 인덱스로 저장되기 때문에 검색과 저장이 빠르게 일어남 JS CODE (1) function solution(participant, completion) { const map = new Map(); for(let i = 0; i < participant.length; i++) { let a = participant[i], b = completion[i]; map.set(a, (map.get(a) || 0) + 1); map.set(b, (..

알고리즘/구현

[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. 문제를 처음 봤을 때 객체의 프..

알고리즘/구현

[Python] 백준, 1946

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

Martin Hoffman
'알고리즘' 카테고리의 글 목록