새벽을 밝히는 붉은 달

2021.03.04 오늘의 기록 본문

Developer/Record

2021.03.04 오늘의 기록

자윰 2021. 3. 5. 01:03

<Shell Script>

  • if 문
if [ 조건 ]
then
	참인 경우 실행
else
	거짓인 경우 실행
fi
  • 문자열 비교 연산자
    "문자열1" = "문자열2"       // 두 문자열이 같으면 참
    "문자열1" != "문자열2"     // 두 문자열이 같지 않으면 참
    -n "문자열"                           // 문자열이 NULL이 아니면 참
    -z "문자열"                           // 문자열이 NULL이면 참
  • 산술 비교 연산자
    수식1 -eq 수식2                  // 두 수식(또는 변수)이 같으면 참
    수식1 -ne 수식2                  // 두 수식(또는 변수)이 같지 않으면 참
    수식1 -gt 수식2                   // 수식1이 크면 참
    수식1 -ge 수식2                  // 수식1이 크거나 같으면 참
    수식1 -lt 수식2                    // 수식1이 작으면 참
    수식1 -le 수식2                   // 수식1이 작거나 같으면 참
    !수식                                      // 수식이 거짓이면 참
  • 파일조건
    -d 파일이름                          // 파일이 디렉터리면 참
    -e 파일이름                          // 파일이 존재하면 참
    -f 파일이름                           // 파일이 일반 파일이면 참
    -g 파일이름                          // 파일에 set-group-id가 설정되면 참
    -r 파일이름                           // 파일이 읽기 가능이면 참
    -s 파일이름                           //  파일 크기가 0이 아니면 참
    -u 파일이름                          // 파일에 set-user-id가 설정되면 참
    -w 파일이름                         // 파일이 쓰기 가능 상태면 참
    -x 파일이름                           // 파일이 실행 가능 상태면 참
  • case문을 쓸 때, 각 분기 조건의 마지막 구문의 맨 뒤에 세미콜론을 2개 붙여야 함

case문 예시

  • AND 연산자: and / -a / && 사용
  • OR 연산자: or / -o / || 사용
  • 이때, -a나 -o는 테스트문([]) 안에서만 사용할 수 있음

<파이썬 알고리즘 인터뷰>

  • 빅오: 점근적 실행 시간을 표기할 때 가장 널리 쓰이는 수학적 표기법 중 하나
  • 분할 상환 분석(Amortized Analysis): 빅오와 함께 함수의 동작을 설명할 때 중요한 분석 방법 중 하나. 최악의 경우를 여러 번에 걸쳐 골고루 나눠주는 형태로 알고리즘의 시간 복잡도를 계산할 수 있음.
  • 병렬화: 일부 알고리즘들은 병렬화로 실행 속도를 높일 수 있음.
  • 파이썬은 버전 2까지는 int(고정 정밀도 정수형)와 long(임의 정밀도 정수형)으로 2가지의 숫자 정수형을 제공하였음.
  • PEP 237을 통해 버전 2.4부터는 int가 충분하지 않으면 자동으로 long 타입으로 변경.
  • 버전 3부터는 아예 int 단일형으로 통합되면서, 임의 정밀도 정수형을 지원. 고정 정밀도 정수형은 지원하지 않음.

 

  • bool은 파이썬에서 내부적으로 1(True)과 0(False)로 처리되는 int의 서브 클래스임
  • object > int > bool 의 구조
  • 파이썬은 모든 것이 객체임 (c는 원시 타입, java는 원시 타입과 객체를 지원)
  • c++과 파이썬과의 차이
    // c++
    int a = 10;
    int &b = a;
    b = 7;

    std::cout << a << std::endl;
    ------------------------------------
    7

    #python
    >>> a = 10
    >>> b = a
    >>> id(a), id(b)
    (140707608778688, 140707608778688)
    >>> b = 7
    >>> a, id(a), id(b)
    (10, 140707608778688, 140707608778552)

    c++은 참조 변수에 값을 할당하면 참조의 대상 또한 할당된 값으로 변경되지만, 파이썬의 경우 b에 새로운 값을 할당하게 되면 더 이상 a 변수를 참조하지 않고, 새로운 객체를 참조하게 됨 -> a의 값은 그대로 유지되며, b는 다른 id로 변경됨
  • 불변 객체는 값의 변경이 불가능 -> 참조 변수에서 값을 조작할 수 없음
  • 가변 객체를 참조하고 있다면 참조 변수에서 값을 조작하는 경우 참조 대상의 변수도 변경 가능함. 다만, 이 경우에도 = 연산자로 재할당을 하게 되면 다른 ID가 됨
  • 파이썬에서 비교 연산자 is 는 id() 값을 비교하는 함수임
  • 파이썬에서 비교 연산자 ==는 값을 비교하는 연산자임
  • 예)
    >>> a = [1, 2, 3]
    >>> a == a
    True
    >>> a == list(a)
    True
    >>> a is a
    True
    >>> a is list(a)
    False

  • 파이썬의 객체 구조는 매우 편리하고 강력한 기능을 제공하나, c나 java에 비해 느린 이유가 됨

 

'Developer > Record' 카테고리의 다른 글

2021.03.08 오늘의 기록  (0) 2021.03.09
2021.03.06 오늘의 기록  (0) 2021.03.07
2021.03.02 오늘의 기록  (0) 2021.03.03
2021.02.14 오늘의 기록  (0) 2021.02.14
2021.02.03 오늘의 기록  (0) 2021.02.04
Comments