본문 바로가기
코딩테스트/실습

프로그래머스 해시 문제 - 1 , 완주하지못한 선수들

by 육지상어 2021. 1. 1.
728x90
반응형

너무 바쁘다. 금욜 코테 일정이 생겨서 개인 작업은 다 중지. 플랫폼은 프로그래머스이다.

일단 기본 문제는 다 풀자.

해시 1. 완주하지 못한 선수

p. 선수 리스트 - 중복 허용, 중복된 문자가 더 많으면 완주못한걸로 간주
c. 완주 리스트 - 중복 허용됨, 중복된 문자가 최대 선수 리스트만큼
r - 배열 저장값으로 활용. 답은 하나만

function solution(p, c) {
//var answer = '';
let r = [];
//객체생성

```
for (let i in p) {
r[p[i]] = 0;
}
//참가자만큼의값초기화

for (let i in p) {
r[p[i]]++;
}
//참가자만큼의값을++해준다. 왜냐면중복되는사람도있으므로 A가3번 중복참가인데 완주에서2번밖에안나오면
// 절대값으로하면에러

for (let i in c) {
r[c[i]]--;
}
//참가자값을-- 해준다

for (let i in r) {
if (r[i] > 0) {
return i;
}
}

//값이0 이상이면리턴해준다
//return answer;

}

그냥 이런식으로다가, 값을 집어넣는 배열을 만들어 각 키에 해당하는 값에 ++ -- 를 넣어 마지막에 판별식을 넣었다.
정규화나 맵핑을 사용하는 다른 사람도 있었다. 빅오로 표현하면 4n 정도의 속도값이니깐 나쁘지 않다고 생각한다. sort나 맵핑도 결과적으로 그렇고, 팝이나 리스트를 쓰는방식도 나쁘지 않을것같았다.

반응형

댓글