TIL - 2021.03.08

Wanna be __·2021년 3월 11일
0

TIL

목록 보기
23/45
post-thumbnail

Today, I Learned

Algorithm

코드와 데이터를 분리하기(P49)

날짜의 월을 숫자로 입력하면 거기에 맞는 이름을 출력하는 방법을 고안할 때,

  • 좋지 않은 예
    int를 input, string을 output으로 하는 함수를 만들어
    함수 내에서 if - else if 구문으로 처리한다
    안좋은 이유 - 1에 Jan을 2에 Feb을 출력하는데, 여기에는 코드의 논리와는 상관없는 기능이 들어감..

  • 좋은 예
    string monthName[] = { "Jan", "Feb", ... , "Dec" } 처럼 배열을만들면, 배열의 원소에 접근하듯 O(1)으로 바로 사용 가능함.

일관되지 않은 범위 표현 방식 지양하기(P52)

for 문을 쓸 때도

for(int i = 1; i <= num; i++) X
for(int i = 0; i  < num; i++) O

이렇게 써 왔던 것 처럼
a <= n < b인 범위를 표현하는 반열린구간 표현에 익숙해지자.
C++ iterator에서도 begin()은 첫 원소를, end()는 마지막 + 1 의 원소를 지칭하며, 위와 동일한 맥락에서 기인한다!

연산자 우선순위 판단(P60)

if(b & 1 == 0)

// & 연산자는 비트 and 연산자

언제 True가 될까? -> 항상 False다!
if(b &(1==0));과 같이 처리되기 때문에, 1==0 은 false(=0)이 되고 0과 비트연산자 &의 결과는 항상 0일 수 밖에 없다.

즉, 비트연산자는 다른 이항 연산자보다 우선순위가 낮다!

profile
성장하는 개발자

0개의 댓글