4 minute read


Secure Coding

Secure Coding : 어떠한 기형 불량 입력에 대해서도 프로그램이 "비정상 종료" 되지 않도록 프로그래밍 하는 것.
  • 프로그램 작성자는 사용자가 어떤 입력 값을 취할지 모른다
  • 따라서 프로그래머는 Secure Coding 을 해야 한다.
  • 어떻게?
    • 상세한 요구사항 명세를 통해 규격에 맞는 입력을 구체화.
    • 규격에 맞지 않는 입력 나머지 전체를 예외처리 해야 한다.
    • try - except 문법을 사용하자.

try - except 문법과 예외 처리

  • 예외 (Exception) 처리: 기대했던 것과 다른 흐름 발생 시 처리 동작을 설계하는 것.
    • ex. 정수 입력을 기대, 정수 아닌 모든 입력 예외 처리.
  • 파이썬에서의 예외 처리
    • try - except 구조 활용

      try:
      실행할 코드
      except:
      예외가 발생했을  처리하는 코드
      

논리 연산자

  • 논리 (Boolean) 자료형을 가진 피연산자 간 계산을 수행하는 연산자
    • and, or, xor, not

논리연산자: and

  • 두 개의 피연산자가 모두 True일 경우에만 True를 반환하고, 나머지 경우에는 모두 False를 반환

    >> True and True 
    True
    >> True and False 
    False
    >> False and True 
    False
    >> False and False 
    False
    



논리연산자: or & xor (^)

  • OR: 두 피연산자 중 하나만 True여도 True를 반환하고, 둘 다 False일 경우에만 False를 반환

    >> True or True 
    True
    >> True or False 
    True
    >> False or True 
    True
    >> False or False 
    False
    
  • XOR: 두 피연산자 중 하나만 True일 때 True 반환, 나머지는 False 반환

    >> True^True 
    False
    >> True^False 
    True
    >> False^True 
    True
    >> False^False 
    False
    # 주의! XOR 이라는 키워드는 없으니 ^ 기호로 사용하자.
    



논리연산자: not

  • 피연산자가 True일 때는 False를 반환하고, False일 때는 True를 반환
    • 단항연산자 (Unary Operator): 1개의 피연산자만을 가짐
      >> not True 
      False
      >> not False 
      True
      


유클리드 호제법 (Euclidean Algorithm)

🔥 유클리드 호제법 (Euclidean Algorithm) 🔥

  • 두 수의 최대공약수를 구하는 알고리즘
    • 2개의 자연수 a, b(a>b) 에 대해서 a를 b로 나눈 나머지를 r이라하면, a와 b의 최대공약수는 b와 r의 최대공약수와 같음
    • 이 성질에 따라, b를 r로 나눈 나머지 r’를 구하고, 다시 r을 r’로 나눈 나머지를 구하는 과정을 반복하여 나머지가 0이 되었을 때 나누는 수가 a와 b의 최대공약수가 됨 _ sProcdess
      유클리드 호제법 작동 방식



유클리드 호제법의 예

  • 720과 186의 최대공약수 구하는 순서
    1. 720은 186으로 나누어 떨어지지 않기 때문에, 720을 186으로 나눈 나머지 162를 다음 단계에 전달
    2. 186은 162로 나누어 떨어지지 않기 때문에, 186을 162로 나눈 나머지 24를 다음 단계에 전달
    3. 162는 24로 나누어 떨어지지 않기 때문에, 162를 24로 나눈 나머지 18을 다음 단계에 전달
    4. 24는 18로 나누어 떨어지지 않기 때문에, 24를 18로 나눈 나머지 6을 다음 단계에 전달
    5. 18은 6으로 나누어 떨어짐

      따라서, 최대 공약수는 6이 된다.

실습

두 정수 부호의 동일성 검사

  • 프로그램 동작
    1. 0이 아닌 두 정수 a와 b를 입력 받는다.
    2. 두 정수의 부호가 동일한지 다른지의 여부를 출력한다.
  • ex.
    • a가 양수이고 b가 양수이면 “같다” 출력
    • a가 양수이고 b가 음수이면 “다르다” 출력
      >> 
      a=1
      b = -1 
      다르다 
      >>
      A = 20 
      B = 30 
      같다 
      >>
      
두 정수 부호의 동일성 검사 소스코드 (클릭)

4_1_1_Procdess
소스코드 및 결과



두 자연수의 최대공약수 구하기 (1)

  • 프로그램 동작
    1. 0이 아닌 두 정수 a와 b를 입력 받는다.
    2. 두 정수의 최대 공약수 출력(유클리드 호제법 사용 X)
      >>
      자연수 a 입력 : 12 
      자연수 b 입력 : 18 
      최대공약수 : 6 
      >>
      자연수 a 입력 : 9 
      자연수 b 입력 : 15 
      최대공약수 : 3 
      >>
      자연수 a 입력 : 6 
      자연수 b 입력 : 12 
      최대공약수 : 6 
      >>
      
두 자연수의 최대공약수 구하기 (1) 소스코드 (클릭)

4_1_2_Procdess
소스코드 및 결과



두 자연수의 최대공약수 구하기 (2)

  • 프로그램 동작
    1. 0이 아닌 두 정수 a와 b를 입력 받는다.
    2. 두 정수의 최대 공약수 출력(유클리드 호제법 사용)
      >>
      자연수 a 입력 : 12 
      자연수 b 입력 : 18 
      최대공약수 : 6 
      >>
      자연수 a 입력 : 9 
      자연수 b 입력 : 15 
      최대공약수 : 3 
      >>
      자연수 a 입력 : 6 
      자연수 b 입력 : 12 
      최대공약수 : 6 
      >>
      
두 자연수의 최대공약수 구하기 (2) 소스코드 (클릭)

4_1_3_Procdess
소스코드 및 결과



세 자연수의 최대공약수 구하기

  • 프로그램 동작
    1. 0이 아닌 두 정수 a, b, c를 입력 받는다.
    2. 세 정수의 최대 공약수 출력
      >>
      자연수 a 입력 : 12 
      자연수 b 입력 : 18 
      자연수 c 입력 : 24
      최대공약수 : 6 
      >>
      자연수 a 입력 : 9 
      자연수 b 입력 : 15 
      자연수 c 입력 : 7
      최대공약수 : 1 
      >>
      
세 자연수의 최대공약수 구하기 소스코드 (클릭)

4_1_4_Procdess
소스코드 및 결과 - 두 가지 정수의 최대 공약수와 나머지 한 정수와의 최대 공약수를 구하면 된다.



프로그래밍 실습

두 자연수의 최소 공배수 구하기

  • 프로그램 동작
    1. 0이 아닌 두 정수 a와 b를 입력 받는다.
    2. 두 정수의 최소 공배수 출력 (최대공약수 사용 X)
      >>
      자연수 a 입력 : 12 
      자연수 b 입력 : 18 
      최소공배수 : 36 
      >>
      자연수 a 입력 : 10 
      자연수 b 입력 : 10 
      최소공배수 : 10 
      >>
      자연수 a 입력 : 10 
      자연수 b 입력 : 20 
      최소공배수 : 20 
      >>
      
두 자연수의 최소 공배수 구하기 소스코드 (클릭)

4_2_1_Procdess
소스코드 및 결과



세 자연수의 최소 공배수 구하기

  • 프로그램 동작
    1. 0이 아닌 두 정수 a와 b를 입력 받는다.
    2. 두 정수의 최소 공배수 출력 (최대공약수 사용 X)
      >>
      자연수 a 입력 : 12 
      자연수 b 입력 : 18 
      자연수 c 입력 : 24
      최소공배수 : 72
      >>
      자연수 a 입력 : 10 
      자연수 b 입력 : 20 
      자연수 c 입력 : 40
      최소공배수 : 40 
      >>
      자연수 a 입력 : 2
      자연수 b 입력 : 3 
      자연수 c 입력 : 4
      최소공배수 : 12
      >>
      
세 자연수의 최소 공배수 구하기 소스코드 (클릭)

4_2_2_Procdess
소스코드 및 결과



최대한의 설명을 코드 블럭 내의 주석으로 달아 놓았습니다.

혹시 이해가 안가거나 추가적인 설명이 필요한 부분, 오류 등의 피드백은 언제든지 환영합니다!

긴 글 읽어주셔서 감사합니다. 포스팅을 마칩니다.



처음으로~

Task Lists

  • Secure Coding
  • try - except 문법과 예외 처리
  • 논리 연산자
  • 유클리드 호제법 (Euclidean Algorithm)
  • 실습
  • 프로그래밍 실습

Comments