⚡문제정보


문제를 요약하면 다음과 같습니다
10일동안 하루에 한물품씩 살건데 할인하는 품목과 내가 사고싶은 품목 10개가 정확히 일치하는 타이밍이
몇번있는지를 알고 싶다.
discount의 길이가 100,000까지 나올수 있으니까 숫자가 커졌을때를
고려하면 좋겠고 10개가 정확히 일치해야하니까
want 품목에 없는 물건이 나오면 바로 그날짜의 탐색을 중지하는것도 좋겠네요
🔍나의 풀이
function solution(want, number, discount) {
let set = new Set(want)
let map = new Map()
let answer = 0
for(i=0 ; i<want.length; i++) {
map.set(want[i], number[i])
}
for(i=0; i<= discount.length - 10; i++) {
let slicer = discount.slice(i,10+i)
let dupmap = new Map(map)
for(j=0; j <slicer.length ; j++) {
if(!set.has(slicer[j])) {break}
else {
dupmap.set(slicer[j], dupmap.get(slicer[j]) -1 )
}
}
let check = [...dupmap.values()].filter(ele => ele != 0)
if(!check.length) answer++
}
return answer
}
제가 생각한 접근방법은 다음과 같습니다.
1. set을 만들어서 만약 set에 없는 품목이 나오면 j for문을 탈출시키자
2. break되지 않았다면 밸류를 뺴주자
3. 모든 slicer에 대해 검사를 해야하니까 밸류를 담은 map을 복사해서 사용해야겠다
4. 만약 밸류가 모두 0이라면 filter에 걸러졌을때 길이가 0일테니까 길이가 0이라면 answer를 더해주자!

대체로 괜찮은 런타임속도가 나오는데 2번에서 유독 오래걸리네요
hmm..
'programmers' 카테고리의 다른 글
[Programmers Level 1] 개인정보 수집 유효기간 Javascript (0) | 2023.01.11 |
---|---|
[Programmers Level 2] 주차 요금 계산 Javascript (0) | 2023.01.11 |
[Programmers Level 2] 괄호 회전하기 Javascript (0) | 2023.01.11 |
[Programmers Level 3] 베스트 앨범 Javascript (0) | 2023.01.08 |
[Programmers Level 2] H-index Javascript (0) | 2022.12.31 |
⚡문제정보


문제를 요약하면 다음과 같습니다
10일동안 하루에 한물품씩 살건데 할인하는 품목과 내가 사고싶은 품목 10개가 정확히 일치하는 타이밍이
몇번있는지를 알고 싶다.
discount의 길이가 100,000까지 나올수 있으니까 숫자가 커졌을때를
고려하면 좋겠고 10개가 정확히 일치해야하니까
want 품목에 없는 물건이 나오면 바로 그날짜의 탐색을 중지하는것도 좋겠네요
🔍나의 풀이
function solution(want, number, discount) {
let set = new Set(want)
let map = new Map()
let answer = 0
for(i=0 ; i<want.length; i++) {
map.set(want[i], number[i])
}
for(i=0; i<= discount.length - 10; i++) {
let slicer = discount.slice(i,10+i)
let dupmap = new Map(map)
for(j=0; j <slicer.length ; j++) {
if(!set.has(slicer[j])) {break}
else {
dupmap.set(slicer[j], dupmap.get(slicer[j]) -1 )
}
}
let check = [...dupmap.values()].filter(ele => ele != 0)
if(!check.length) answer++
}
return answer
}
제가 생각한 접근방법은 다음과 같습니다.
1. set을 만들어서 만약 set에 없는 품목이 나오면 j for문을 탈출시키자
2. break되지 않았다면 밸류를 뺴주자
3. 모든 slicer에 대해 검사를 해야하니까 밸류를 담은 map을 복사해서 사용해야겠다
4. 만약 밸류가 모두 0이라면 filter에 걸러졌을때 길이가 0일테니까 길이가 0이라면 answer를 더해주자!

대체로 괜찮은 런타임속도가 나오는데 2번에서 유독 오래걸리네요
hmm..
'programmers' 카테고리의 다른 글
[Programmers Level 1] 개인정보 수집 유효기간 Javascript (0) | 2023.01.11 |
---|---|
[Programmers Level 2] 주차 요금 계산 Javascript (0) | 2023.01.11 |
[Programmers Level 2] 괄호 회전하기 Javascript (0) | 2023.01.11 |
[Programmers Level 3] 베스트 앨범 Javascript (0) | 2023.01.08 |
[Programmers Level 2] H-index Javascript (0) | 2022.12.31 |