20230828 내일배움캠프 15일차

Minsang Kim·2023년 8월 28일
0

TIL

목록 보기
15/41

오늘부터 다시 또 조가 바꼈다. 많은 사람들을 만나고 있어서 재밌긴 함.
근데 내일 동원훈련가서 빠지는게 아쉬움. :(


파이썬 리멤버

  • 바다코끼리 연산자
    바다코끼리 연산자가 무엇이냐?
    :=
    바로 할당과 반환을 동시에 하는 연산자이다. 그럼 이름이 왜 바다코끼리냐고? 그야 바다코끼리를 닮았으니까.
    사용 예시를 보자
s = 'walrus operator is good'
flag = 'walrus' in s

if flag:
	print(s)
if flag := 'walrus' in (s := 'walrus operator is good'):
	print(s)

두 코드는 같은 출력값을 출력한다. 코드 길이가 확 줄어드는 것을 알 수 있다. 대입과 할당을 동시에 하다니, 유용하니 꼭 써먹자.

if-else vs switch-case

하늘은 왜 if-else를 낳고 switch-case를 낳았는가.
나는 지금까지 왜 switch문을 쓰는지를 몰랐다. 귀찮게 왜 break를 하나씩 걸어줘야 하지. 그냥 if에 중괄호 걸면 되지. 뭐 break를 안쓰면서 밑에 까지 실행하고 싶으면 switch를 써야겠지만 그 외에도 switch를 굳이 쓰는 이유가 뭘까 하고 그냥 if만 쓰고 있었다.
그런데 오늘 저번 개인과제 피드백에 이런 말이 씌여 있었다.

조건문의 경우가 늘어날 경우 Enum을 활용한 switch case문을 사용하길 권장드립니다.

高.... 왜 그럴까... 구글링 ㄱㄱ

  • 직관적이다.
    음 직관적인지는 잘 모르겠다. 나는 break를 계속 써줘야 한다는게 오히려 더 실수를 유발할 수 있다고 생각하기 때문이다.

  • 효율적이다.
    if-else문의 chain의 경우에는 조건의 갯수에 대해 선형적인 연산이 필요하기 때문에 O(N)의 시간 복잡도가 필요하다. 반면에 switch문의 경우에는 적절한 조건으로 바로 점프해 실행하기 때문에 O(1)의 시간 복잡도가 필요하다.
    이거구나. 이거 때문에 switch를 쓰는구나.
    컴파일러나 코드 상황에 따라 다르지만 보통 if문이 3개 일때까지는 if-else가 더 빠르고, 그 이상이면 switch-case문을 사용하는 것이 효율적이다.
    하지만 또 이걸 바꾼다고 해서 치명적인 비효율이 있는 건 아니라고 한다.

결론 : 쓰라는 거 쓰자

세줄 요약

  • :=
  • if와 switch는 입맛에 맞게
  • 내일 동원훈련감
profile
게임만 하다가 개발자로

0개의 댓글