본문 바로가기

반응형

프로그래머스/해시

(8)
[해시] 프로그래머스 '롤케이크 자르기' - js 1. 문제 https://school.programmers.co.kr/learn/courses/30/lessons/132265 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 2. 코드 처음 푼 코드) Set을 사용하여 모든 경우를 비교하는 간단한 풀이라 당연히 시간초과가 날 것을 예상했다.. 그래도 항상 완탐을 제일 먼저 시도해보아야하니 시간초과를 예상했어도 한 번 작성해보았다. function solution(topping) { let answer = 0; const check = (arr1,arr2) => { let set1 = new Set(); l..
[해시] 프로그래머스 '할인 행사' - js 1. 문제 https://school.programmers.co.kr/learn/courses/30/lessons/131127 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 2. 코드 처음 풀었던 코드) 왜 4,12번만 통과인지 이해가 안된다....내가 어딜 잘못했는지 알고싶드아아아아악!!!! function solution(want, number, discount) { let answer = 0; let total = number.reduce((a,c) => a+=c); let right = true; for(let i=0;i { let map = ne..
[해시] 프로그래머스 '귤 고르기' - js 1. 문제 https://school.programmers.co.kr/learn/courses/30/lessons/138476#qna 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 2. 설명 이 문제는 해시의 개념을 잘 알고 있으면 쉽게 풀 수 있다. 값들이 특정 분류로 나뉜다?! 그럼 바로 해시 맵! 또 하나의 포인트는 해시 맵의 정렬이다. 이 문제에서는 value값이 큰 요소 순으로 정렬을 해서 종류 별 귤 갯수가 많은 순으로 선택을 해나가기 때문이다. 해시 정렬 방법 1. 스프레드 syntax를 사용해 배열로 만들어준다(이차원 배열이 됨). 2. 원..
map을 사용한 해시테이블 해시란? key와 연결되어 있는 value를 삽입, 삭제, 탐색하는 알고리즘 함수이다. 해시테이블? 자료구조의 종류 중 하나 (ex. Array, Object 등)이며 key와 value를 가지는 자료구조 형태이다. 언제 사용해? 특정 종류로 분류되는 값들이 있는데, 걔들을 지지고 볶고 해야할 때 해시 테이블을 사용하여 풀어주면 좋을 것 같다. Map을 사용한 해시테이블 0. new Map() : 해시테이블 만들기 let map = new Map(); 1. set() : 값 가져오기 let number = 0; let str = 'string'; let obj = { a: 1 }; let fnc = () => { console.log('fnc'); }; map.set(number, 4); //key에 n..
[해시] 프로그래머스 '베스트 앨범' - js 1. 문제 https://school.programmers.co.kr/learn/courses/30/lessons/42579 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 2. 설명 해당 문제의 설명은 주석으로 대신한다. Object를 사용하여 해쉬 테이블을 만드는 방식을 사용했다. 3. 코드 function solution(genres, plays) { let answer = []; // 장르 별 재생 횟수 저장하는 객체 let totalPlays = {}; // 각 노래 별 장르, 재생 횟수, 인덱스 저장하는 객체 let playList = {}; f..
[해시] 프로그래머스 '위장' - js 1. 문제 https://school.programmers.co.kr/learn/courses/30/lessons/42578?language=javascript 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 2. 설명 이번 문제는 해시 개념을 잘 사용해서 해시 테이블을 만드는 것까지는 문제가 없었으나... 문제는 조합을 구하는 것이였다 ㅋㅋㅋ 역시 수학이 내 발목을 잡는구나~~~ 어떻게 조합에 관련한 코드를 짤지 감도 안오던 터, 질문하기 부분에 좋은 설명이 있어 해당 글을 참고해가며 풀었다. https://school.programmers.co.kr/q..
[해시] 프로그래머스 '폰켓몬' - js 1. 문제 https://school.programmers.co.kr/learn/courses/30/lessons/1845 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 2. 설명 해당 문제는 알고리즘 개념 중 '해시'를 사용하여 푸는 문제이다. 해시 테이블은 key-value가 1:1 매핑되어 있기 때문에 검색, 삽입, 삭제 과정에서 모두 평균적으로 O(1)의 시간복잡도를 갖는다. 해시를 사용하여 문제를 풀 때는 Map 또는 Object를 사용하면 된다고하는데, 나는 Map을 선택했다. Map이 좀 더 효율적이라고 하여...ㅎㅎ 먼저 new Map()을..
[해시] 프로그래머스 '완주하지 못한 선수' - js 1. 문제 https://school.programmers.co.kr/learn/courses/30/lessons/42576 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 2. 코드 1. 해시 미사용 풀이법 - sort() 어디서인지는 모르겠지만, 첫번째로 푼 방식에서는 타임아웃이 났다. indexOf 는 모든 요소를 검사해야하기 때문에 시간이 오래걸린다. 이 문제의 핵심은 두 배열을 sort해준 후 비교한다는 것이다. 두 배열을 sort해준 후 같은 인덱스에서의 값이 다르면 참가자 배열의 i번째 인덱스에 해당하는 사람이 마라톤을 완주하지 못한 것이 되고..

반응형