문제 해결 기교와 나의 문제 해결 방법
나는 간단한 문제를 해결할 것이지만, 나는 여기에서 제시한 제시가 면접 문제뿐만 아니라 더욱 실제적인 문제에도 유용할 것이라고 희망한다.
카탈로그
문제 해결의 기교
너의 이전의 경험과 지식은 너의 문제 해결 능력에 매우 큰 영향을 끼친다.만약 둘 다 비교적 높다면, 너는 문제를 더욱 쉽게 해결할 수 있을 것이다.
그러나 당신은 불가능해 보이는 문제, 심지어는 어디서부터 시작해야 할지 모르는 문제를 어떻게 처리합니까?
면접을 위해 문제를 해결하거나 문제를 해결하는 기교를 연습하고 있지 않으면 인터넷에서 해결 방안을 찾아야 한다.
만약 당신이 정확한 문제의 해결 방안을 찾지 못한다면 비슷한 문제를 찾아보세요.
문제.
내가 토론하고자 하는 문제를 '2화 문제' 라고 부른다.이것은 매우 환영받는 면접 문제(source다.
구체적으로 다음과 같다.
"Find all the pairs of two integers in an unsorted array that sum up to a given S."
For example, if the array is [3, 5, 2, -4, 8, 11] and the sum is 7, your program should return [[11, -4], [2, 5]] because
11 + (-4) = 7 and 2 + 5 = 7.
문제를 해명하다
우리가 해야 할 첫 번째 일은 우리가 문제와 그 제약 요인을 이해할 수 있도록 확보하는 것이다.우리가 문제를 해결한 후에 이렇게 하는 것이 더욱 쉽다.
이런 상황에서 문제는 매우 직접적이기 때문에 오해할 공간이 많지 않다.
"Find all the pairs of two integers in an unsorted array that sum up to a given S."
For example, if the array is [3, 5, 2, -4, 8, 11] and the sum is 7, your program should return [[11, -4], [2, 5]] because
11 + (-4) = 7 and 2 + 5 = 7.
우리가 해야 할 첫 번째 일은 우리가 문제와 그 제약 요인을 이해할 수 있도록 확보하는 것이다.우리가 문제를 해결한 후에 이렇게 하는 것이 더욱 쉽다.
이런 상황에서 문제는 매우 직접적이기 때문에 오해할 공간이 많지 않다.
원시 솔루션
우리가 이 문제를 정확하게 이해한 후에 다음 단계는 간단한 해결 방안을 시도하는 것이다. 이것은 우리가 생각한 가장 뚜렷한 해결 방안이다.간단한 해결 방안은 통상적으로 효율이 낮아서 실천에서 그다지 쓸모가 없을 수도 있지만, 이것은 당신이 문제에 대한 이해를 깊이 있게 하는 좋은 방법이며, 우리가 기초를 닦은 후에 우리가 원하는 목적을 달성하기 쉽다.
이제 우리의 예시를 위해 해결 방안을 작성해 봅시다.자바스크립트를 사용할 것입니다:
function twoSum(array, goalSum) {
const solution = [];
for(let i = 0; i < array.length; i++ ) {
for(let j = i+1; j < array.length; j++ ) {
const sum = array[i] + array[j];
if(sum === goalSum)
solution.push([array[i], array[j]])
}
}
return solution;
}
console.log(twoSum([3, 5, 2, -4, 8, 11], 7));
여기에서 나는 단지 모든 가능한 숫자를 조합한 후에 그것들이 주어진 합과 같은지 검사할 뿐이다.
이 해의 시간 복잡도는 O(n2)이다.더 잘할 수 있는지 봅시다.
단순화된 솔루션 개선
우리는 서로 다른 방식을 통해 해결 방안을 개선할 수 있다.어떤 경우에는 속도가 가장 중요하지만, 다른 경우에는 기억력을 걱정해야 한다.때때로 더 읽을 수 있는 해결 방안을 찾는 것도 더 효율적인 해결 방안을 선택하는 것보다 낫다. 이것은 완전히 당신이 무엇을 필요로 하는지에 달려 있다.
해결 방안을 찾을 때 목표를 명심하세요.때때로 당신은 다양한 해결 방안을 고려하여 목표에 가장 적합한 방안을 선택할 수도 있다.
이런 상황에서 나는 속도를 추구할 것이다.다음은 코드입니다.
function twoSum(array, goalSum) {
const set = new Set();
const solution = [];
for (let i = 0; i < array.length; i++) {
const targetNumber = goalSum - array[i];
const condition = set.has(targetNumber);
if (condition) {
solution.push([array[i], targetNumber]);
}
set.add(array[i]);
}
return solution;
}
console.log(twoSum([3, 5, 2, -4, 8, 11], 7));
이 해결 방안에서 나는 Set()
object를 사용하여 값을 저장하고 찾는다.
단계:
function twoSum(array, goalSum) {
const solution = [];
for(let i = 0; i < array.length; i++ ) {
for(let j = i+1; j < array.length; j++ ) {
const sum = array[i] + array[j];
if(sum === goalSum)
solution.push([array[i], array[j]])
}
}
return solution;
}
console.log(twoSum([3, 5, 2, -4, 8, 11], 7));
우리는 서로 다른 방식을 통해 해결 방안을 개선할 수 있다.어떤 경우에는 속도가 가장 중요하지만, 다른 경우에는 기억력을 걱정해야 한다.때때로 더 읽을 수 있는 해결 방안을 찾는 것도 더 효율적인 해결 방안을 선택하는 것보다 낫다. 이것은 완전히 당신이 무엇을 필요로 하는지에 달려 있다.
해결 방안을 찾을 때 목표를 명심하세요.때때로 당신은 다양한 해결 방안을 고려하여 목표에 가장 적합한 방안을 선택할 수도 있다.
이런 상황에서 나는 속도를 추구할 것이다.다음은 코드입니다.
function twoSum(array, goalSum) {
const set = new Set();
const solution = [];
for (let i = 0; i < array.length; i++) {
const targetNumber = goalSum - array[i];
const condition = set.has(targetNumber);
if (condition) {
solution.push([array[i], targetNumber]);
}
set.add(array[i]);
}
return solution;
}
console.log(twoSum([3, 5, 2, -4, 8, 11], 7));
이 해결 방안에서 나는 Set()
object를 사용하여 값을 저장하고 찾는다.단계:
set.has()
찾기읽어주셔서 감사합니다!!
이것은 내가 여기에 있는 첫 번째 댓글이다. 나는 그것이 너무 무섭지 않기를 바란다.
피드백이 있으면 감격을 금할 수 없습니다.
Reference
이 문제에 관하여(문제 해결 기교와 나의 문제 해결 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://dev.to/maturc/problem-solving-tips-and-a-breakdown-of-my-problem-solving-approach-4523
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(문제 해결 기교와 나의 문제 해결 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/maturc/problem-solving-tips-and-a-breakdown-of-my-problem-solving-approach-4523텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)