-
[알고리즘/자바스크립트] 베스트앨범 / 프로그래머스 - 해시 Level 3Algorithm 2019. 7. 14. 21:44
해시 - Level 3 문제 설명 스트리밍 사이트에서 장르 별로 가장 많이 재생된 노래를 두 개씩 모아 베스트 앨범을 출시하려 합니다. 노래는 고유 번호로 구분하며, 노래를 수록하는 기준은 다음과 같습니다. 속한 노래가 많이 재생된 장르를 먼저 수록합니다. 장르 내에서 많이 재생된 노래를 먼저 수록합니다. 장르 내에서 재생 횟수가 같은 노래 중에서는 고유 번호가 낮은 노래를 먼저 수록합니다. 노래의 장르를 나타내는 문자열 배열 genres와 노래별 재생 횟수를 나타내는 정수 배열 plays가 주어질 때, 베스트 앨범에 들어갈 노래의 고유 번호를 순서대로 return 하도록 solution 함수를 완성하세요. 제한사항 genres[i]는 고유번호가 i인 노래의 장르입니다. plays[i]는 고유번호가 i인..
-
[알고리즘/자바스크립트] 위장 / 프로그래머스 - 해시 Level 2Algorithm 2019. 7. 13. 22:56
해시 - Level 2 스파이들은 매일 다른 옷을 조합하여 입어 자신을 위장합니다. 예를 들어 스파이가 가진 옷이 아래와 같고 오늘 스파이가 동그란 안경, 긴 코트, 파란색 티셔츠를 입었다면 다음날은 청바지를 추가로 입거나 동그란 안경 대신 검정 선글라스를 착용하거나 해야 합니다. 종류 이름 얼굴 동그란 안경, 검정 선글라스 상의 파란색 티셔츠 하의 청바지 겉옷 긴 코트 스파이가 가진 의상들이 담긴 2차원 배열 clothes가 주어질 때 서로 다른 옷의 조합의 수를 return 하도록 solution 함수를 작성해주세요. 제한사항 clothes의 각 행은 [의상의 이름, 의상의 종류]로 이루어져 있습니다. 스파이가 가진 의상의 수는 1개 이상 30개 이하입니다. 같은 이름을 가진 의상은 존재하지 않습니다..
-
[알고리즘/자바스크립트] 완주하지 못한 선수 / 프로그래머스 - 해시 Level 1Algorithm 2019. 7. 13. 12:13
해시 - Level 1 수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다. 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수들의 이름이 담긴 배열 completion이 주어질 때, 완주하지 못한 선수의 이름을 return 하도록 solution 함수를 작성해주세요. 제한사항 마라톤 경기에 참여한 선수의 수는 1명 이상 100,000명 이하입니다. completion의 길이는 participant의 길이보다 1 작습니다. 참가자의 이름은 1개 이상 20개 이하의 알파벳 소문자로 이루어져 있습니다. 참가자 중에는 동명이인이 있을 수 있습니다. 입출력 예 participant completion return [leo,..
-
[알고리즘/자바스크립트] Binary Search Algorithm (이진 탐색 알고리즘)Algorithm 2019. 7. 12. 19:12
Binary Search(이진탐색) 만약 어떤 친구가 1부터 10까지 중에 숫자 하나를 생각한 다음 우리에게 그 숫자가 뭔지 맞춰보라고 했다고 생각해보자. 이 때 그 숫자를 맞추기 위해 1부터 10까지 하나 하나 이 숫자가 맞는지 물어본다면 우리는 최악의 경우에 10번을 질문해야할 것이다. 그런데 만약에 우리가 1과 10의 가운데 숫자를 부르고 맞춰야 할 숫자가 그 숫자보다 작은지 큰지 친구가 알려준다면 어떻게 될까? 만약에 우리가 맞춰야할 숫자 x가 3이라고 해보자. 1과 10의 중간 숫자인 5와 비교한다. x < 5 1 2 3 4 5 6 7 8 9 10 우리가 찾는 숫자는 5보다 작으니까 5보다 큰 숫자는 모두 지울 수 있다. 이제 검색할 범위가 절반 이하로 줄어들었다. 이제 1과 5의 중간인 2와 ..
-
[JS/Linked List] 자바스크립트로 Single Linked List 구현하기Frontend 2019. 7. 12. 14:24
https://im-developer.tistory.com/121?category=828401 [자료 구조] Data Structure - (1) Stack / Queue / Linked List 자료 구조는 코딩과는 별로 상관없는 것처럼 보일 수도 있겠지만 사실 프로그래밍에 있어서 매우 중요한 부분을 차지한다. 내가 어떠한 프로그램을 구현할 때, 혹은 어떤 알고리즘 문제를 해결하거나 새로운 로직.. im-developer.tistory.com 지난번 포스팅에서 정리한 Linked List는 대충 아래와 같이 생겼다. Linked list는 배열과 비교했을때 특정 데이터를 검색하는데 시간이 오래 소요된다. 그 이유는 배열은 각 공간의 주소가 인덱스라는 것으로 정해져있기 때문이다. 따라서 어떤 값의 주소만..
-
[알고리즘/자바스크립트] 가장 처음으로 중복 없는 문자 (First Non Repeated Character)Algorithm 2019. 7. 11. 12:18
[문제] Given an arbitrary input string, return the first nonrepeated character in the string. For example: firstNonRepeatedCharacter('ABA'); // => 'B' firstNonRepeatedCharacter('AABCABD'); // => 'C' 가장 처음으로 중복이 없는 문자를 리턴하는 문제이다. 내가 푼 방법은 다음과 같다. 체크한 문자는 checked라는 객체에 담고, 위 객체에 없다면 indexOf()를 사용하여 중복 문자가 없는지 loop을 돌며 검사한다. 중복 문자가 없는 문자를 발견하면 해당 문자를 리턴한다. var checked = {}; var strArr = string.split(..
-
[알고리즘/자바스크립트] 알파벳 개수 세고 정렬하기 (Character Frequency)Algorithm 2019. 7. 11. 12:13
[문제] Write a function that takes as its input a string and returns an array of arrays as shown below sorted in descending order by frequency and then by ascending order by character. [Example] characterFrequency('mississippi') === [['i', 4], ['s', 4], ['p', 2], ['m', 1]] characterFrequency('miaaiaaippi') === [['a', 4], ['i', 4], ['p', 2], ['m', 1]] 영어 문장을 파라미터로 받아서 각 알파벳의 개수를 카운트하고 위 예시와 같은 2차 배..
-
[JS/ES2015] 자바스크립트 ES2015(ES6) 문법 정리(2) - Rest Parameter / Spread Operator / DestructuringFrontend 2019. 7. 6. 13:40
바닐라코딩 부트캠프 프렙 과정을 끝마치고 본과정으로 들어가기 전 일주일 동안의 휴식 기간이 있었는데, 정말 최선을 다해(!) 열심히(!) 놀았다. ㅋㅋㅋ 이제 다음주 월요일에 부트캠프 시작하고 열심히 달려야하니까 오늘부터 슬슬 그동안 공부했던거 읽어보면서 기억을 되살려보려고 한다... 오늘은 프렙 과정에서 배웠던 내용들 중에서 아직 정리를 못한 Rest Parameter, Spread Operator와 Destructuring에 대해서 정리를 해보려고 한다. 1. Rest Parameter (나머지 인자들) Rest Parameter는 나머지 인자들, 혹은 여분의 인자들이라는 뜻이다. 함수를 정의할 때 마지막 인자 앞에 ...을 붙이면 해당 인자 다음에 오는 모든 나머지 인자들을 배열로 만든다. func..
-
[알고리즘/자바스크립트] 지뢰찾기 알고리즘 (Minesweeper Algorithm)Algorithm 2019. 6. 26. 15:41
며칠 전에 거의 일주일을 고생하며 구현한 지뢰찾기 게임이다. 오늘은 지뢰찾기 구현할 때 가장 핵심이 되는 알고리즘 2가지를 정리해보려고 한다. 1. 임의의 칸에 지뢰 배분하기 먼저 9X9 사이즈의 칸에 10개의 지뢰를 배분한다고 해보자. 우리는 먼저 아래와 같이 생긴 9X9의 빈 방을 만들어야할 것이다. 이 것을 2차 배열로 만들어준다. [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0..
-
[JS/Calendar] 바닐라 자바스크립트로 달력 구현하기Frontend 2019. 6. 26. 15:00
오늘은 바닐라 자바스크립트로 캘린더 구현하는 방법을 포스팅해보려고 한다. 캘린더 모양은 대충 이렇게 생겼고, 오늘 날짜는 노란색 동그라미로 표시된다. 그리고 특정 날짜를 클릭하면 해당 날짜가 다른 색깔로 표시되고 왼쪽 사각형에 있는 날짜와 요일이 클릭한 날짜로 바뀌어야 한다. See the Pen calendar by juyeonH (@JY712) on CodePen. 해당 기능을 구현한 코드는 위에 codepen으로 올렸고, 몇 가지 코드만 어떻게 구현했는지 적으려고 한다. const init = { monList: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'Novem..