ARTS Week 12

3440 단어
Jan 13, 2020 ~ Jan 19, 2020

Algorithm


Problem 112. Path Sum(경로 총계) 제목 링크
제목 설명: 두 갈래 나무와 하나의 값sum를 지정하고, 두 갈래 나무가 잎 경로의 합과 같은sum의 경로가 있는지 확인하고, 존재하면true를 되돌리고, 반대로false를 되돌려줍니다.예를 들어, sum = 22, 두 갈래 트리는 다음과 같습니다.
      5
     / \
    4   8
   /   / \
  11  13  4
 /  \      \
7    2      1

결과true를 반환합니다. 왜냐하면 5->4->11->2
사고방식은 나무의 반복은 귀속을 사용하고sum는 동시에 업데이트를 유지해야 한다. 예를 들어 위의 예에서 뿌리 노드를 사용한 후sum=22-5=17, 결점은 공결점과 잎결점에 대해 특수 처리를 해야 한다.
통과된 코드는 다음과 같다
# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None

class Solution:
    def hasPathSum(self, root: TreeNode, sum: int) -> bool:
        if root == None:
            return False
        elif root != None and root.left == None and root.right == None:
            return (sum == root.val)
        else:
            return (self.hasPathSum(root.left, sum-root.val)) or (self.hasPathSum(root.right, sum-root.val))

Review


이번 주에는 모든 프로그래머가 알아야 할 97가지 리뷰를 계속합니다.원문 링크.다음은 이번 주 5가지 작은 내용입니다.
  • 오류를 무시하지 마십시오(Don't Ignore that Error!)원문 링크 이상은 매우 좋은 지시와 오류 처리 방식이지만, 많은 코드 중 이상을 포착했을 뿐, 예를 들어 아래의 코드를 처리하지 않는다
  • try {
        // ...do something...
    }
    catch (...) {} // ignore errors

    오류를 소홀히 하면 심각한 결과를 초래할 수 있다. 예를 들어 발견하기 어려운 오류가 발생하고 오류를 이용하여 소프트웨어를 침입하고 파괴할 수 있다.따라서 우리는 그것을 소홀히 하지 않고 오류를 처리해야 한다.
  • 언어만 배우지 말고 그 문화(Don't Just Learn the Language, Understand its Culture)의 원문 링크 프로그래밍 언어는 매우 많은데 모두 독특한 특징과 적용 조건을 가지고 있다.언어만 배우면 어떤 언어, 특히 차이가 큰 언어를 이해할 수 없을 수도 있다.예를 들어 자바를 계속 배우고 사용한 다음에 Haskell을 배울 때 함수식 프로그래밍에 대해 의혹이 생길 수 있다. 이때 함수식 프로그래밍의 문화, 예를 들어 발생한 배경, 원인, 목적, 생태 등을 이해해야 한다
  • 프로그램을 직립 위치에 박지 마십시오 (Don't Nail Your Program into the Upright Position) 원문 링크는 가능한 한 이상을 사용해서 오류를 처리하는 것이지 사용자에게 직접 던지는 것이 아닙니다.마치 UI 디자인에 오류 보고서를 사용자에게 영원히 보여주지 말고 문제를 해결한 것처럼 규칙이 있는 것과 같다.직접 튀어나오는 오류는 사용자에게 좋지 않은 인상을 줄 수 있고, 대부분의 사용자는 오류의 원인을 알면서도 그것을 어떻게 고치는지 알기 때문이다
  • "마술 발생"(Don't Reply on "Magic Happens Here") 원문 링크에 의존하지 마세요. 구체적인 상황을 모르더라도 프로그램이 정상적으로 실행될 수 있습니다. 우리는'마법'이라고 부릅니다.예를 들어 프로그램에 메모리 누출 오류가 있지만 매번 누출된 메모리가 매우 적습니다. 아마도 프로그램이 계속 10여 시간, 심지어 몇 십 시간 동안 실행해도 문제가 발생하지 않을 것입니다. 그러나 결국 어느 순간 메모리가 소모되어 문제가 발생했습니다
  • 자신을 반복하지 마라(Don't Repeat Yourself) 원문 링크를 반복하지 마라(DRY)는 모든 프로그래밍에서 가장 기본적인 원칙 중 하나로 세 가지 하위 관점을 포함한다.1) 복제는 낭비이다. 모든 줄의 코드는 반드시 유지보수를 받아야 한다. 불필요한 복제는 코드 라이브러리를 팽창시키고 시스템에 불필요한 복잡성을 증가시킨다.2) 절차 중복은 자동화를 요구한다. 개발 과정에서 많은 과정이 중복된다. 예를 들어 테스트, 만약에 수동으로 완성하면 많은 불필요한 노동을 증가시켜야 한다.3) 논리적 중복은 추상성을 요구한다. 논리적 중복은 if-else 또는 switch-case를 복사하여 검사할 수 있다. 더 좋은 방법은 디자인 모델을 이용하여 피하는 것이다. 예를 들어 공장 방법..

  • Tips


    Python의 문자와 ASCII 코드 값의 변환:ord() 함수는 문자를 ASCII 코드 값으로 변환하고,chr() 함수는 ASCII 코드 값을 문자로 변환합니다. 예를 들어 다음과 같습니다.
    print("ord('H') = ",ord('H')) # ord('H') =  72
    print("chr(77) = ",chr(77))   # chr(77) =  M

    Sharing


    Review 부분에서 언급한 프로그램을 직립 위치에 박지 마세요(Don't Nail Your Program into the Upright Position). 저는 이렇게 하면 좋고 나쁨이 있다고 생각합니다. 단지 오류가 발생했거나 구체적인 오류 원인을 보고하든.나는 사용자에 대한 영향이 똑같다고 생각한다. 좋은 방법은 간략한 오류를 보고하는 것이다. 구체적으로 알고 싶지 않은 사용자가 들어가면 오류가 발생하는 것을 알면 된다. 오류를 구체적으로 알고 싶은 사용자는 상세한 오류를 볼 수 있다.

    좋은 웹페이지 즐겨찾기