이렇게 설정하면 안되는 이유
278
2 asked
<html>
<head>
<meta charset="UTF-8" />
<title>출력결과</title>
</head>
<body>
<script>
function solution(m, product) {
let n = product.length;
product.sort((a, b) => a[0] + a[1] - (b[0] + b[1]));
for (let i = 0; i < n; i++) {
let money = m - (product[i][0] / 2 + product[i][1]);
let answer = 1;
for (let j = 0; j < n; j++) {
if (j !== i && product[j][0] + product[j][1] > money) break;
if (j !== i && product[j][0] + product[j][1] <= money) {
money -= product[j][0] + product[j][1];
answer++;
}
}
}
return answer;
}
let arr = [
[6, 6],
[2, 2],
[4, 3],
[4, 5],
[10, 3],
];
console.log(solution(28, arr));
</script>
</body>
</html>
이용해주세요.Answer 2
0
안녕하세요^^
자바스크립트 변수 유효범위를 생각하셔야 합니다. 님처럼 for 블럭 안에서 선언한 변수는 해당 블럭 안에서만 유효합니다.
let n = product.length;
let answer;
위에 위치 처럼 solution 함수의 지역변수로 선언하시면 에러는 없어집니다.
하지만 에러는 없어지지만 이 코드는 오름차순으로 정렬한 상품중 마지막 상품을 할인받을 때를 무조건 답으로 하는 코드입니다.
아래는 입력은 [12, 1] 상품을 할인받아 5가 답입니다. 하지만 님의 코드는 [8, 6]을 할인받아 4가 나올겁니다.
0
부족하지만 조금이라도 도움이되셨길 바라며 아는대로 답변드리겠습니다.
우선 let, const 키워드가 block scope인것은 아실겁니다.
function solution(m,product){
// 여기서 let이나 const 키워드로 변수선언 및 할당했을 경우는 이 solution 함수 안의 중괄호 영역 안에서만 유효합니다.
}
그러나 만약
function solution(m, product) {
for(let i = 0; i < n; i++ {
// 여기의 for문 안에서 let이나 const 키워드로 변수선언 및 할당했을 경우는 여기의 for문 안의 중괄호 영역 안에서만 유효합니다.
}
}
도움이 되셨길 바랍니다
continue를 사용하는 이유
0
75
2
정렬 가능 여부 판단하기
0
63
2
알고리즘 학습법 관련해서 질문드립니다.
0
81
1
코드 리뷰 부탁드립니다!
0
88
1
indexOf를 사용해서 풀어보았습니다 !!
0
67
1
저는 이런식으로 구현 해보았습니다 !!
0
63
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
130
1
투포인트알고리즘으로 풀어봤습니다.
0
139
0
코드 리뷰 부탁드립니다.
0
116
1
코드 맞게 작성한 거 아닌가여??
0
143
1

