TIL. while in Wecode: code() and mogakco()

Kim Chioh·2021년 1월 29일
0

알고리즘

목록 보기
2/2
post-thumbnail
  • 안녕하세요~? 새벽2시에 블로깅을 합니다. 위에 모습은 마치 저와 같아서 가져왔어요.
    오늘은 뭐가 문제였냐, 제가 알고리즘을 풀다가 While에 대한 개념이 부족하다는 것을 느꼈습니다.(try except역시 ^^;)
    한번 개념 정리하고 코딩해봤으니 아는 거라고 생각한 제 자신이 부끄럽더라구요. 하지만 개발자라면 문제해결을 해야겠죠?

그런의미에서 한번, 저처럼 후회하지 마시고, 여러분도 다시 자신이 while을 제대로 이해하고있는지 간단한 퀴즈를 통해 먼저 체크해볼까요?ㅋㅋㅋ 아 하도 논문만 쓰고있으니 블로그가 꿀잼이네요.
먼저 들어가기 전에 밑에 그림을 보며 자기상태를 한번 점검해보세요! (질문에 대한 답은 밑에 설명해놓겠습니다.)

Quiz

  1. while문을 언제 써야하는가?
  2. B구역의 코드가 실행되면 다음에 어디 코드가 실행되는지 알고있는가?
  3. D구역의 코드가 실행되기 전 코드는 어딘가?
  4. break를 언제 써야하고 break문이 실행되면 어떻게되는지 알고있는가?
  5. else문을 줄이기 위한 if문을 구성할줄 아는가?(효율적인 코드)
  6. except문이 실행되기 위한 조건을 아는가?
  7. F는 어디에 대한 코드구문이며 순서는 언제 실행되는가?


<그림 출처: 17기 강승연님의 비법노트>

퀴즈 어떠셨어요? 훗, while 우습게 보셨다가 아주 놀라진 않으셨나요?(제얘기)
정답을 하나씩 풀어가며 정리해볼게요.

Quiz 정답

1. while문을 언제 써야하는가?

while이라는 건 기본적으로 조건이 True라는 전제(또는 bool표현식)하에 반복되는 loop입니다. range가 확실한 for 구문과 차이가 있죠.
한마디로 "for는 리스트 딕셔너리 특정횟수반복때는 써라. 근데 아닌경우엔 while써라." 라고 할 수 있겠습니다.

2. B구역의 코드가 실행되면 다음에 어디 코드가 실행되는지 알고있는가?

b구역의 코드가 실행된다는건 while loop안에, try: 안에, if문 조건을 만족시키니까, else 로 가지않고 바로 if문을 나와 try:안에 D구역으로 갑니다.

3. D구역의 코드가 실행되기 전 코드는 어딘가?

D구역은 if문 바깥쪽 try:에 걸려있습니다. 따라서 그전에 실행되는 코드는 if문 또는 else 문을 실행하겠네요.


여기까진 쉬웠죠? 다음부터 중요해요!

4. break를 언제 써야하고 break문이 실행되면 어떻게되는지 알고있는가?

break 는 실행되면 while loop전체를 탈출합니다.(Wooooow)
엄청 파워풀하죠? 따라서 코드를 끝까지 실행하지않고, 조건을 만족하기만하면 while을 그만하고 싶을 경우 쓰겠네요.

5. else문을 줄이기 위한 if문을 구성할줄 아는가?(feat. 효율적인 코드 by 지훈님)

이건 제가 session때 감동을 받은 부분이여서 꼭 강조하고싶어요. (지훈님을 너무 악마교관으로 묘사한 경향이 있어서 만회해보려는거아니에요 ㅋㅋㅋㅋ)
효율적인 코드란 뭘까요? 반복되는 구문이 없고, 이해하기 쉬운코드가 아닐까요? 그럼, else문을 줄이기 위한 if문은 어떻게 구성할까요?
우선 구조를 알고 응용을 해보죠.
if문의 조건을 만족하지 않는 경우 실행되는 구문은 뭘까요? 네, 맞아요 else문이죠.
근데, 또 웃긴게 if문의 조건을 만족시키지 않으면 어차피 다음 코드로 넘어가겠죠? 그게 바로 D구역입니다. 다시말해 else와 다를 바가 없기도 하다는 겁니다.
따라서 else문을 쓰지 않더라도, D구역이 else문의 역할을 하게 코드를 짜 놓으면, 굳이 else라는 코드를 추가할 필요가 없습니다.
하지만 항상 그런건 아닙니다. 여기서 센스있는 분들이라면 눈치를 채셨겠죠. if 문을 부정형(일치하지않는경우)조건으로 하는 경우가 많습니다.
예를들어 if a != 0, 인 조건이 주어지면 else 는 당연히 a == 0 인 경우죠? 만약 이때 else가 없다면 if 에서 나온 아래 코드는 자연스럽게 a == 0 인경우를 전제로 하는 코드일 겁니다.

6. except문이 실행되기 위한 조건을 아는가?

넘어가서 try except 문은 보통 예외처리를 하기 위한 것이라고 다들 알고 계실텐데요, except는 그럼 try문에 걸려있는 코드들이 실행된다면 except문이 실행될까요?
아니죠.
말그대로 예외이기때문에, try에 코드들이 실행되지 않을 경우에만 실행됩니다.

7. F는 어디에 대한 코드구문이며 순서는 언제 실행되는가?

F는 while loop에 걸려있는 가장 마지막에 실행되는 코드구문입니다.


RIP........

마무리하며:
1. while을 분명히 배웠지만 나는 이해하지못했었다.
2. 그림을 그리며 설명해준 동기 강승연님께 정말 감사하다.
3. 블로깅은 논문보다 재밌다.^^

profile
Just do what to do

2개의 댓글

comment-user-thumbnail
2021년 1월 30일

승연님과 치오님 두분 다 감사합니다~ 잘 읽었습니다 ㅎㅎ

1개의 답글