728x90
https://school.programmers.co.kr/learn/courses/30/lessons/131127
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
길이가 100,000 여서 완전탐색으로 해봤다.
내가 사고 싶은 제품과 개수를 wanted라는 딕셔너리에 넣고, 할인 제품을 쭉 체크하면서 원하는 제품을 모두 샀는지 확인했다.
여기서 자신이 원하는 제품과 수량이 할인하는 날짜와 10일 연속으로 일치해야 한다고 했다.
그리고 제품의 총 개수 10이므로 무조건 10일 내의 제품을 모두 사야 한다는 것!!!!
그러므로 1일(0)부터 할인하는 날 - 10 범위가 정현이가 회원가입을 시작하는 날의 범위다.
tmp에 wanted를 복사해서 원하는 제품이 할인하면 사야하는 제품 개수를 줄여줬다.
그 후, 사고 싶은 제품의 개수가 0이 되면 answer + 1
import Foundation
func solution(_ want:[String], _ number:[Int], _ discount:[String]) -> Int {
var answer = 0
var wanted = [String: Int]()
for i in 0..<want.count {
wanted[want[i]] = number[i]
}
for i in 0...discount.count - 10 {
var tmp = wanted
for j in i..<i+10 {
guard tmp[discount[j]] != nil else { continue }
if tmp[discount[j]]! > 0 {
tmp[discount[j]]! -= 1
}
}
if !tmp.values.contains(where: {$0 != 0}) {
answer += 1
}
}
return answer
}
완전탐색이라... 시간이 꽤 걸리는 군요1
다른 사람들도 비슷하게 해서 이번엔 다른 사람 코드 분석은 패스~
728x90
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스/Swift] 배달 (0) | 2023.01.11 |
---|---|
[프로그래머스/Swift] 연속 부분 수열 합의 개수 (0) | 2023.01.10 |
[프로그래머스/Swift] 파일명 정렬 (0) | 2023.01.07 |
[프로그래머스/Swift] 개인정보 수집 유효기간 (0) | 2023.01.07 |
[프로그래머스/Swift] 방문 길이 (0) | 2023.01.06 |