inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)

4. 졸업선물

코드 리뷰 부탁드립니다!

87

1djb23

작성한 질문수 3

0

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;
}

javascript 코딩-테스트

답변 1

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다.

님이 제공해주신 코드는 할인 상품을 선택하여 최대한 많은 상품을 구매할 수 있는 경우를 찾는 알고리즘입니다. 로직을 살펴보면, 모든 상품을 하나씩 할인된 상품으로 가정하고, 나머지 상품을 정가로 구매할 때 몇 개의 상품을 살 수 있는지를 계산합니다.

다음은 코드의 주요 동작 방식입니다:

  1. 상품 정렬: 입력받은 상품 배열 arr는 상품 가격과 배송비의 합을 기준으로 오름차순 정렬되었습니다. 이는 더 많은 상품을 살 수 있게 하려는 전략의 일환입니다.

  2. 할인 상품 선택 및 예산 계산:

    • 각 상품을 할인된 상품으로 한 번씩 가정하고 이 상품의 할인된 가격을 구합니다.
    • 할인된 가격을 전체 예산 m에서 제외하여 남은 예산으로 남은 상품들을 구매할 수 있는지를 확인합니다.
  3. 상품 구매 확인:

    • 남은 예산 내에서 구매 가능한 상품의 갯수를 계산합니다. 이때 이미 할인을 받은 상품은 제외하며, 가능한 경우 temp 카운트를 증가시킵니다.
  4. 최대 구입 가능한 상품 갯수 추적 및 반환:

    • 각각의 케이스에서 최대 구매 가능한 상품의 수를 추적하여, 그 중 최대값을 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