프로그래밍 문제 해결을 위한 5단계
3709 단어 algorithmsprogramming
1. 다른 사람에게 설명할 수 있을 때까지 문제를 여러 번 읽으십시오.
이것은 가장 중요한 단계입니다. 문제를 완전히 이해할 때까지 여러 번 읽고, 이해하지 못하면 풀 수 없습니다. 문제를 이해했는지 알 수 있는 가장 좋은 방법은 다른 사람에게 설명할 수 있는 것입니다.
2. 수동으로 문제 해결
Nothing can be automated that cannot be done manually!
우리가 작성하는 모든 코드에는 기반이 있으며 수동 프로세스입니다. 즉, 먼저 수동으로 문제를 해결하십시오. 이렇게 하면 자동화하려는 대상을 정확히 알 수 있으므로 미친 사람처럼 코드를 작성하기 시작하면 낭비되는 많은 시간을 절약할 수 있습니다.
하나 이상의 입력과 몇 가지 코너 케이스를 사용하여 프로세스를 테스트하여 유효성을 검사하고 머릿속에서 취하는 모든 단계에 세심한 주의를 기울이고 각각의 단계를 기록하십시오.
3. 수동 솔루션 개선
프로세스를 개선할 수 있는지, 더 쉬운 방법이 있는지 또는 루프와 같이 단순화하기 위해 잘라낼 수 있는 단계가 있는지 확인하십시오. 이 단계는 매우 중요합니다. 코드에서보다 머리에서 프로세스를 재구성하는 것이 훨씬 더 쉽다는 것을 기억하십시오.
이 시점에서 코드를 작성하고 싶은 유혹을 느낄 것입니다. 아직 하지 마세요. 다루어야 할 단계가 한 단계 더 있습니다. 이렇게 하면 최종 코드를 더 쉽게 작성할 수 있습니다.
4. 유사 코드 작성
의사 코드는 프로그램이 수행해야 하는 작업에 대한 자세한 설명으로, 문제를 해결하는 데 필요한 모든 코드 줄을 작성하는 데 도움이 됩니다.
숙련된 프로그래머는 때때로 이 단계를 생략하지만, 경험이 있든 없든 장담할 수 있습니다. 의사 코드를 작성하면 의사 코드의 각 줄을 실제 코드로 변환하기만 하면 되기 때문에 최종 코드를 작성하는 과정이 훨씬 쉬워질 것입니다. 암호.
숫자의 제곱 값을 반환하는 함수를 작성하는 데 필요한 단계에 대해 생각해 봅시다.
// Initialize a variable with a 'n' value
// Multiply variable by it self
// Return the result of that multiplication
이제 코드가 수행해야 하는 작업을 정확히 알고 있으므로 한 단계 더 수행해야 합니다.
5. 유사 코드를 실제 코드로 교체
재미있는 부분이 있습니다. 이제 프로그램이 수행해야 할 작업을 확실히 알았으므로 코드를 작성하고 테스트하기만 하면 됩니다. 그 과정에서 항상 코드를 개선할 수 있음을 기억하십시오.
정사각형 예제를 사용하겠습니다(데모용으로 매우 간단함).
function square(n) {
// Initialize a variable with a 'n' value
const initialValue = n
// Multiply variable by it self
const squaredValue = initialValue * initialValue
// Return the result of that multiplication
return squaredValue
}
코드 최적화:
function square(n) {
return n * n
}
자!
뻔한 과정처럼 보일 수도 있지만 대부분의 사람들은 절반을 생략하고 코딩을 시작하여 귀중한 시간을 낭비하게 됩니다.
문제가 아무리 복잡하더라도 이 5단계를 따르면 문제를 더 짧은 시간에 덜 골치 아프게 해결하는 데 도움이 될 것입니다.
참고: 문제가 너무 복잡한 경우 작은 문제로 나누면 “Divide and conquer”이라는 기술이 사용됩니다.
내site에 원래 게시됨 - 2016년 5월 26일
Reference
이 문제에 관하여(프로그래밍 문제 해결을 위한 5단계), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/aprietof/5-steps-to-solving-programming-problems--502d텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)