코드 리뷰 부탁드립니다!
87
작성한 질문수 3
function solution(m, arr) {
arr.sort((a, b) => a[0] + a[1] - (b[0] + b[1]));
let answer = 0;
for (let discount = 0; discount < arr.length; discount++) {
//할인이 적용되는 상품
let discountPrice = arr[discount][0] / 2 + arr[discount][1];
let budget = m - discountPrice;
let temp = 1;
for (let undiscount = 0; undiscount < arr.length; undiscount++) {
//할인이 적용된 상품은 제외
if (discount === undiscount) continue;
let price = arr[undiscount][0] + arr[undiscount][1];
budget -= price;
//예산을 초과하는 경우
if (budget >= 0) temp++;
if (budget < 0) budget += price;
}
answer = Math.max(answer, temp);
}
return answer;
}
답변 1
0
안녕하세요, 인프런 AI 인턴입니다.
님이 제공해주신 코드는 할인 상품을 선택하여 최대한 많은 상품을 구매할 수 있는 경우를 찾는 알고리즘입니다. 로직을 살펴보면, 모든 상품을 하나씩 할인된 상품으로 가정하고, 나머지 상품을 정가로 구매할 때 몇 개의 상품을 살 수 있는지를 계산합니다.
다음은 코드의 주요 동작 방식입니다:
상품 정렬: 입력받은 상품 배열
arr는 상품 가격과 배송비의 합을 기준으로 오름차순 정렬되었습니다. 이는 더 많은 상품을 살 수 있게 하려는 전략의 일환입니다.할인 상품 선택 및 예산 계산:
- 각 상품을 할인된 상품으로 한 번씩 가정하고 이 상품의 할인된 가격을 구합니다.
- 할인된 가격을 전체 예산
m에서 제외하여 남은 예산으로 남은 상품들을 구매할 수 있는지를 확인합니다.
- 각 상품을 할인된 상품으로 한 번씩 가정하고 이 상품의 할인된 가격을 구합니다.
상품 구매 확인:
- 남은 예산 내에서 구매 가능한 상품의 갯수를 계산합니다. 이때 이미 할인을 받은 상품은 제외하며, 가능한 경우
temp카운트를 증가시킵니다.
- 남은 예산 내에서 구매 가능한 상품의 갯수를 계산합니다. 이때 이미 할인을 받은 상품은 제외하며, 가능한 경우
최대 구입 가능한 상품 갯수 추적 및 반환:
- 각각의 케이스에서 최대 구매 가능한 상품의 수를 추적하여, 그 중 최대값을
answer에 저장하여 반환합니다.
- 각각의 케이스에서 최대 구매 가능한 상품의 수를 추적하여, 그 중 최대값을
이 접근 방식은 반복문을 두 번 사용하여 복잡도가 높아질 수 있지만, 할인을 순차적으로 적용하여 다양한 시나리오를 고려하는 유용한 방법입니다.
유사한 다른 코드 리뷰 및 참조 링크를 확인하고자 하실 경우, 다음의 게시물을 참조하세요:
- “안녕하세요. 이런 방식으로 접근해도 될까요?”: 몇 가지 반례에 대한 설명과 함께, 코드의 논리적 오류 파악에 도움을 드릴 수 있습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
continue를 사용하는 이유
0
75
2
정렬 가능 여부 판단하기
0
61
2
알고리즘 학습법 관련해서 질문드립니다.
0
80
1
indexOf를 사용해서 풀어보았습니다 !!
0
67
1
저는 이런식으로 구현 해보았습니다 !!
0
62
1
12,13,14 강의 소리만 나오고 검은 화면입니다
0
97
3
반복문 최소화하고 indexOf 사용해서 풀어봤습니다
0
61
1
영상 보기 전에 직접 풀어봤습니다.
0
71
1
섹션1의 17번문제 이 풀이로 풀어도 될까요?
0
133
2
정규표현식으로 처리해도 상관없나요 ?
0
119
2
3칸씩 건너뛸 수 있을 경우
0
124
2
강의에 대해 질문있습니다.
0
133
2
Object와 Set을 이용해 풀어봤습니다.
0
116
2
이렇게 해도 되나요?
0
102
2
선생님 중복 단어나 중복관련 문제들은 set을 이용하면 좋을것 같습니다.
0
144
2
이렇게 풀어도 괜찮을까요?
0
136
1
이렇게 풀어도 괜찮을까요?
0
112
1
모든 아나그램 찾기에서 시간복잡도
0
98
1
코드리뷰 부탁드립니다.
0
129
1
for loop 탈출은 return 문으로 해도 되지 않나요?
0
129
1
투포인트알고리즘으로 풀어봤습니다.
0
138
0
코드 리뷰 부탁드립니다.
0
115
1
코드 맞게 작성한 거 아닌가여??
0
142
1
문드윽뀨
0
96
1





