seunghyun Note
[프로그래머스] 완주하지 못한 선수 (해시) with JS 본문
728x90
반응형
링크 : https://school.programmers.co.kr/learn/courses/30/lessons/42576
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제 풀이
오늘은 하루종일 해시를 공부하기 위해 해시 관련 문제 위주로 풀었다.
해시는 저장 또는 검색 등에서 자주 활용되는 자료구조이다. 정확하게는 특정한 함수(알고리즘)를 통해서 값을 추출하고 활용하는 것
함수(알고리즘)를 어떻게 구현하는지에 따라 사용 용도와 성능이 달라진다.
이러한 해시는 더 나아가서 암호, 블록체인, 메시지 인증 코드 등에서도 활용된다.
해시를 이해하기 위해서는 아래 영상을 참고하자
⬇ ⬇ ⬇
5분이면 해시 완전 이해!
https://www.youtube.com/watch?v=zFL29ydL9D8
1. 해시를 선언해준다. dic = {}
2. 배열을 순회시켜 값이 있으면 1씩 증가, 없으면 추가
3. 순회된 배열을 저장한 dic 해시를 비교할 completion 배열을 또 순회시켜 값이 있을경우 -1을 한다.
4. 마지막으로 값이 0보다 클 경우에는 값(중복을 해도 사라지지 않은 값들)을 반환한다.
function solution(participant, completion) {
let dic = {};
participant.forEach((element) => {
dic[element] = (dic[element] || 0) + 1;
});
completion.forEach((element) => {
if (dic[element]) {
dic[element] -= 1;
}
});
for (let key of Object.keys(dic)) {
if (dic[key] > 0) {
return key;
}
}
}
728x90
반응형
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
[백준] 10988번 : 팰린드롬인지 확인하기 with JS (0) | 2024.01.16 |
---|---|
[백준] 1920번 : 수 찾기 with JS (0) | 2024.01.16 |
[백준] 코딩은 체육과목 입니다 with JS (1) | 2024.01.15 |
[프로그래머스] 의상 (해시) with JS (0) | 2024.01.15 |
[프로그래머스] 행렬의 곱셈 with JS (0) | 2024.01.15 |