alt

AI 앱 보안 실수와 체크리스트

Shared on April 10, 2026

00:32:49

얘는 왜 안 떠실까? 잠깐만요 이게 화면이 제대로 안 떠가지고 다시 한번 보여줄게요 로딩이 안 됐어가지고 AI로 만든 앱 절반 이상이 해킹 가능합니다 보안 연구팀이

00:33:06

바이브 코딩으로 만든 앱 2만개를 스캔했는데요 12%가 데이터베이스 비밀번호를 프론트엔드에 그대로 노출하고 있었고 그중 83%는 접근 제어가 아예 없었습니다 누구나 전체 데이터를 다운로드할 수 있는 상태였어요 오늘 바이브 코딩 시대에 가장 흔한 보안 실수 3가지랑 체크리스트까지 다 정리해드릴게요 왜 갑자기 보안 사고가 이렇게 많아졌을까요?

00:33:29

수파베이스랑 파이어베이스가 백엔드 없이 개발하세요 라는 콘셉트로 나왔거든요 원래 앱은 프론트엔드 백엔드 데이터베이스 이렇게 3단계인데 이 서비스들은 프론트엔드에서 데이터베이스에 직접 접근하게 해줍니다 빠르긴 한데 보안 설정을 직접 해야 돼요 근데 AI한테 앱 만들어줘 라고 하면 기능은 만들어주는데 보안 설정은 빠뜨리는 경우가 태반입니다

00:34:18

첫 번째 실수, RLS 잘못 설정입니다. RLS는 로우 레벨 시큐리티의 약자인데요. 쉽게 말하면 데이터베이스의 출입증 같은 겁니다. 너는 내 데이터만 볼 수 있어 라고 규칙을 거는 거예요. 이게 없으면 누구든 전체 데이터를 다 볼 수 있습니다. 10년 경력 개발자 크리스의 칼로리 앱 사례를 보면요. RLS 자체는 정확하게 설정했어요. 사용자가 자기 데이터만 읽고 쓸 수 있게요. 근데 구독 상태랑 API 호출 제한을 같은 테이블에 넣었거든요. 그러니까 사용자가 자기 구독 상태를 프리미엄으로 바꿀 수 있었고 API 호출 제한도 풀어서 AI를 무제한 호출했어요. 만 달러짜리 청구서가 날아올 뻔했습니다. 여기서 중요한 게 클로드한테 RLS 감사를 맡겼는데 이걸 못 잡았어요. RLS 문법 자체는 맞았으니까요. 이건 문법 문제가 아니라 설계 문제입니다.

00:34:42

SQL은 AI가 써줍니다. 하지만 어떤 데이터를 어떤 테이블에 분리할지 이건 전체 플로우를 이해하는 사람이 판단해야 돼요. 바이브 코딩 플랫폼 러버블로 만든 앱에서 1만 8천 명의 학생 데이터가 노출된 사건도 있었습니다. 인증 로직이 거꾸로 작동해서 정상 사용자는 차단하고 공격자는 접근 가능한 상태였어요. 성적 변경, 계정 삭제까지 가능했습니다.

00:35:17

두 번째 실수, 호출 제한 미설정입니다. 프론트엔드에서 하루 5회 제한 걸었으니 괜찮지 이렇게 생각하시죠? 근데 누군가 여러분의 API, 엔드포인트 주소를 찾으면 프론트엔드 제한은 완전히 무시하고 백엔드를 직접 때립니다. 그 주소 찾는 거 어렵지 않아요. 브라우저 개발자, 도구 네트워크 탭에 다 보여요. 모바일 앱도 마찬가지입니다. 요청을 가로채는 게 어렵지 않아요. 해결책은 간단해요. 백엔드에 사용자별 호출 제한을 거세요. 그리고 IP 기반 제한도 추가하면 계정을 수백 개 만들어서 우회하는 것도 막을 수 있어요.

00:35:42

AI 기능이 없어도 이건 해야합니다 수파베이스랑 파이어베이스는 사용량 기반 과금이라 스팸 요청만으로도 요금 폭탄 맞을 수 있거든요 코딩은 전체의 10%예요 이런 설정이 나머지 90%입니다 세번째 실수 프론트엔드에서 민감한 API 직접 호출입니다 AI API, 스트라이프 결제, 이메일 서비스, 클라우드 저장소 이런걸 프론트엔드에서 직접 부르면 키가 노출됩니다

00:36:06

큰 착각 하나 짚고 갈게요. 환경 변수에 넣으면 안전하다? 아닙니다. 프론트엔드와 모바일 앱의 환경 변수는 전부 추출 가능해요. 환경 변수가 안전한 곳은 백엔드 뿐입니다. 크리스 본인도 과거에 AWS 키가 유출됐는데 누군가 그 키로 머신러닝 훈련을 돌려서 3만 달러짜리 청구서를 받았어요. 해결책이요. 민감한 API는 무조건 백엔드에서만 호출하세요.

00:36:39

수파베이스 엣지 펑션즈나 파이어베이스 펑션즈를 쓰면 됩니다. 그리고 예산 한도를 반드시 설정하세요. 앱이 잠깐 죽는 게 만달러 청구서보다 100배 낫습니다. 그러면 바이브 코딩 자체가 위험한 걸까요? 솔직히 말하면 아닙니다. 베라코드 보고서에 따르면 AI가 생성한 코드의 45%가 취약점을 포함하긴 해요. 근데 사람이 짱 코드도 취약점 투성이었거든요. 오히려 AI가 있으면 사람이 놓치는 엣지 케이스를 잡아줄 수 있어요. 핵심은 딸깍 한 번이면 끝이라는 환상을 버리는 겁니다

00:37:04

AI한테 만들어줘만 하면 기능은 만들어줘요. 근데 이거 해킹 안 당하겠지? 라는 질문은 사람이 해야 해요. 저도 애프터워크 앱을 만들면서 느꼈는데 AI의 완료와 내 완료는 기준이 다릅니다. AI의 완료는 기능이 돌아가는 거고 내 완료는 해킹 불가능한 상태여야 해요. 의도적으로 보안 대화를 나누면 혼자 짜는 것보다 훨씬 안전합니다. 정리합니다.

00:37:31

체크리스트 3가지요. 첫째, RLS를 구체적 시나리오로 감사하세요. 사용자가 구독 상태를 바꿀 수 있나? 다른 사용자 데이터를 볼 수 있나? 둘째, 백엔드에 사용자별 및 IP 기반 호출 제한을 거세요. 셋째, 민감한 API는 백엔드에서만 호출하고 예산 한도를 설정하세요. AI 시대에 중요한 건 AI가 아니라 만드는 역량이고 보안도 그 역량의 일부입니다. 도움이 됐다면 구독과 좋아요 부탁드립니다.

00:37:38

어때요?

00:38:02

어때요? 아예 모르는 사람이 들어와서 할 수는 있지만 하지만 얘가 만능은 아니다라는 거는 이해가 될까요? 그럼 이거 링크도 보내줄게요.

00:38:29

근데 이제 여러분이 본인의 도메인과 지금 배우고 있는 이 코딩에 대한 내용을 알면 AI가 아 진짜 정말로 내가 원하는 대로 잘 짰는지 설계가 제대로 됐는지를 알 수 있겠죠

00:38:52

그래서 여러분에게 굳이 나 코딩도 안 할 건데 왜 이게 필요하냐라고 생각할 수 있지만 뒤집어서 생각하면 이제 이걸 모르면 여러분이 사회에 나가서 얘기를 하는 거에 못 따라갈 수도 있다는 거예요 무슨 말인지 이해돼요? 너무 광범위하게 설명을 하는 것 같기는 한데

00:39:16

이제 여러분은 AI랑 뗄래야 뗄 수가 없는 관계가 됐고 저 역시도 AI라고 하는 거에 대해서 시대가 굉장히 많이 변했다라는 걸 느끼고 있는데 그만큼 여러분들이

00:39:43

이제 코딩에서 벗어날 수가 없는 상황이 됐다라고 생각하면 될 것 같아요 내 앱을 쓰는데 이 앱이 취약한지 아닌지 알아야 본인이 쓰면서도 이건 잘못된 거다 아니면 이런 거를 느낄 수 있어야겠죠 안 그러면 내 정보 저렇게 바이브 코딩으로 만들어진 앱으로 인해서 내 정보가 순순순 새는 거를

00:40:08

따질 수도 없게 되는 거죠 무슨 말인지 이해 되죠? 원래는 AI가 만든 노래 중에 최근에 굉장히 핫하던 노래들이 있는데 그것까지 보여주고 싶긴 했지만 일단 수업을 하고 시간이 남으면 AI로 만들었던 노래

00:40:29

한번 들어봤을 수도 있어요 시간이 남으면 누군가가 말해주세요 잠깐 보여줄게요 그래서 오늘은 제어문의를 배울 건데 제어문이 대체 뭐냐

00:40:52

이제 컨트롤 스테이트먼트라고 해서 다음처럼 성적이 나열되어 있을 때 학점을 부여하는 프로그램을 어떻게 만들 수 있을까 첫 번째 점수에 따른 학점의 기준을 정한다 그 기준을 바탕으로 첫 번째 점수를 판단한다 그 다음 점수로 이동하면서 2를 반복한다

00:41:13

그래서 더 이상 판단할 점수가 없을 때 프로그램을 종료한다 이거 이렇게 간단하게만 쓰였지만 얘도 의사코드의 하나죠 얘도 어떻게 보면 하나의 의사코드죠 그냥 단지 우리 그렇게 나와있지 않을 뿐이지 그러니까 의사코드로 가기 전에

00:41:34

하나의 이제 여기에서 이 기준, 이 기준을 정하고 기준을 바탕으로 판단하는 거가 이제 좀 문득 그려졌지만 하나의 의사 코드로도 볼 수 있는 거죠. 그래서 95점 이상은 A플러스, 60점 미만은 F다. 그래서 38점은 60점 미만이므로 F고

00:41:53

그리고 뭐 30, 얘도 그 다음 거 제일 마지막 거 보면은 37점도 얘도 60점 미만이로 F 이런 식으로 보는 거죠 여기 중간중간 생략이 되어 있겠지만 뭐는 B고 뭐는 C고 이렇게까지가 다 나와 있겠죠

00:42:23

그래서 자체적으로 봤을 때 어떤 기준으로 결정하는지를 보면 제어문이 필요하게 돼요 조건 선택이죠 사실상 조건을 건다는 것 자체가 선택한다는 거니까요 그리고 언제까지 해야 하는가 즉 38점부터 37점까지 쭉 이 점수가 나열되어 있는 거를

00:42:43

쭉 돌아야 되는데 그때의 반복이라고 하는 제어문이 또 필요하게 돼요 그리고 부여된 학점은 무엇인지를 볼 때 또 이때 이 조건 조건에 해당하는 거에 대해서 선택하는 거죠 그래서 조건문이자 선택문이라고도 볼 수 있는 건데

00:43:07

그래서 문장이 실행되는 순서에 영향을 주는 문장들은 제어문이라고 해요 그래서 프로그램에서 해야 할 동작의 흐름이나 순서를 처리하는 방법이 제어 구조거든요 그러니까 프로그램이 이렇게 쭉 내려오는 방법이 있고 얘가 이제 순차 구조라고 해서

00:43:34

바로 뒤에 나오는데 여기 밑에도 써있죠 제어 구조는 순차 구조, 선택 구조, 반복 구조로 나뉜다 그래서 사실상 순차 기본적으로 프로그램은 순차 구조예요 그래서 제어하는 기능은 선택문과 반복문이 있는 거예요 그래서 그게 뭐냐면 일단 다시 한번 순차적으로 보면

00:43:58

순차 고전은 이제 순차 시퀀셜하다라고 해서 순차적으로 코드를 실행하는데 우리 위에 쓴 것부터 이렇게 쭉 내려오게 되지 중간에 갑자기 아래로 갔다가 얘 올라왔다가 이렇게 가지는 않죠 여기에서 다시 이렇게 가고 아무것도 안 했는데 프로그램이 이렇게 동작하지는 않죠

00:44:20

이렇게 되려면 이제 우리는 뒤에서 나오는 다른 구조를 써야 되는 건데 그래서 기본적으로는 위에서부터 아래로 물처럼 쭉 차례대로 흘러가는 것처럼 코드가 실행이 돼요 그래서 가장 단순한 구조이지만 가장 많이 사용되는 구조예요

00:44:41

처음 시작부터 단계 1부터 단계 N까지 이렇게 쭉 진행이 되는 거고요. 그래서 예를 보자면 마트에서 장을 보러 가요. 그래서 장보기를 시작하면은 마트에 먼저 들어가야지 장을 볼 수가 있고 내가 사고자 한 것들.

00:45:01

를 다 사고 그 다음에 계산하기 그러고 이제 나면은 장보기 끝나는 거죠 이런식으로 순차 구조가 진행이 되고요 여기에 이제 변동을 주는게 하나의 선택구조 두가지의 경우

00:45:23

중에서 어느 하나를 선택한 방향으로 코드가 실행이 돼요 우리 갈림길 만나면 항상 어느 한쪽으로만 가야 하죠 둘 다는 못 가죠 우리가 만약에 대전에 있는데 대전에서 서울로 가려면 위쪽으로 올라가야지 아래로 내려가면 부산이 나오겠죠

00:45:53

서울 가려지 해놓고 아래로 내려가는 건 사실 말이 안 되는 거죠 그래서 조건에 따라서 실행할 동작을 선택을 하게 되고요 그래서 조건식을 포함해서 선택 구조를 기술하는 명령문을 조건문 또는 선택문이라고 해요 여기 조건식을 포함해서 조건식을 앞에 두냐 선택을 뒤로 두냐에 따라서 조건문이냐 선택문이냐 라고 이렇게 갈리게 되는데

00:46:15

그래서 외출 준비해요. 날씨가 춥냐 안 춥냐에 따라서 추우면 긴팔을 입고 안 추우면 반팔을 입죠. 그리고 반팔을 입고 요즘엔 부채가 아니라 요즘엔 뭐 선풍기? 이제 손으로 들고 다닐 수 있는 선풍기 조그만 거.

00:46:45

그것들을 들고 다니죠. 아니면 추울 때는 긴팔 입고 외투까지 입고 나가죠. 무슨 말인지 이해돼요? 네. 그래서 반복 구조는 동일한 코드 특정 단계가 여러 번 반복해서 실행되는 거예요. 우리 그 강아지들이 꼬리 물려고 계속 빙글빙글 돌 때 있잖아요. 그거랑 똑같다고 보면 돼요. 그래서

00:47:11

중간에 순차군으로 내려오다가 어떤 단계에서부터 1단계가 어떤 단계에서부터 어떤 단계까지 돌아가는데 그게 이제 계속 반복이 되는 거예요 근데 이거를 무한적으로 돌 수도 있고 아니면 내가 이제 원하는 횟수만큼 돌게끔 할 수도 있고요

00:47:37

반복이 계속 걸리면 출력이 안 나오는 게 아니라 그거는 이 단계 안에 내가 출력이 포함되어 있으면 출력이 나오게 되죠 무슨 말인지 이해 돼요? 그러니까 내가 반복하고자 하는 단계 안에 어떤 게 포함되느냐에 따라서

00:48:02

출력이 잘 되고 안 되고가 또 나오겠죠. 그래서 이런 것들이 설계 문제인 거예요. 그래서 헬스클럽으로 갔어요. 그럼 이제 자전거 타기, 역기운동 하기를 한 번씩만 하는 게 아니라 우리 여러 번 반복을 하죠. 그래서 뭐

00:48:29

세트 넣고 1회 10세트 해놓고 이 횟수들을 또 늘려가지고 여러 번 반복을 하게 되는 거죠. 무슨 말인지 이해돼요? 여러분 운동하러 가서 한 번만 타는 거 아니잖아요? 그죠? 그래서 그렇게 운동해야 되는 거. 오늘의 활... 이제...

00:48:52

유산소, 무산소 운동들 해당하는 것 하고 난 다음에 간단하게 마무리 운동하고 그 다음에 이제 퇴장을 하게 되는 거죠. 이런 식으로 이게 반복이 된다라는 게 이렇게 되는 거고요. 그래서 다시 한번 보자면 순차부는 위에서부터 아래로 그냥 쭉 내려오는 상태로

00:49:18

순차적으로 실행이 돼요 문장 1, 문장 2 이렇게 실행이 되고 조건이 생기면 T와 F가 있을 때 문장 1 또는 문장 2 중에 하나만 실행이 되고 그 다음에 문장 3은 둘 다 어떤 조건이었어도 상관없이 무조건 나오게 되는 문장이 되고요

00:49:38

이제 반복문은 내가 조건을 걸고 그 조건이 T일 때까지 계속 보는 거예요 그래서 여기를 계속 돌다가 어느 순간에 조건이 F가 된다 그러면 빠져나와서 문장 2로 가는 형태라고 보면 돼요

00:50:01

반복문은 다음 시간에 할 거고 그래서 일단 제일 중요한 거는 들여쓰기 제어문을 사용할 때 주의해야 되는 게 코드는 자신의 영향을 잘 알아야 돼요 특히 파이썬 같은 경우는 이 코드 블록으로 맞춘다 그랬죠 그래서 우리 항상 탭 사용해서

00:50:24

코드에 들여 쓰기를 맞춰 주게 되는데 그래서 if에 해당하는 블록이 이 초록색에 해당이 되고요. else라고 뒤에 나오는 건데, 뒤에 나오는 건데, 얘에 해당하는 코드 블록은 statement 4에 해당하게 돼요. 그리고 얘네들을 크게 묶는 하나의 큰 블록이 있어요.

00:50:50

얘가 요 초록색의 첫 번째 블록은 하나는 if 블록이라고 보면 되고 얘는 else 블록이라고 보면 되고 그럼 이 제일 큰 거에 대한 블록을 뭐냐고 하면은 이제 여기는 그냥 프로그램 블록이라고 보면 돼요. 전체 블록 그러니까 전체 블록은 쭉 내려가지만

00:51:13

중간에 if블록이냐 else블록이냐에 따라서 실행되는 내용이 바뀐다는 거예요. 그래서 블록이 대체 뭐냐 라고 하면 그래서 여러 라인에 걸친 코드를 브룹으로 설정해서 블록을 형성하게 되는데 프로그래밍 언어별로 블록 설정 방법에 차이가 있어요. 그래서 우리 C나

00:51:34

뭐 자바 같은 경우는 우리 항상 이 중괄호, 뗄래야 뗄 수 없는 중괄호로 블록을 설정을 했어요. 그게 아니라 파이썬에서는 이 들여쓰기, 즉 공백 등을 하는데 그래서 공백의 4개, 보통 스페이스 4번 누르거나

00:51:55

탭 한번이 이렇게 해당할 때가 있어요. 얘는 파이썬에서 지원하는 작성 건데 자동 들여쓰기를 지원하고 필요시 탭키를 사용한다고 하는데 우리도 자동 우리 코랩도 또는 누구는 뭐

00:52:16

코드 같은 걸 쓸 텐데 그런 것들은 이제 자동으로 들여쓰기를 해줘요 그리고 탭을 쓰면은 그 들여쓰기만큼 들어가게 되고요 이거는 이따가 실제 코드들 보면서 아 이게 들여쓰기 된 게 이거구나 라고 보면 돼요 그래서 보면 이렇게 돼요

00:52:38

그래서 if 수준이 이제 쭉 내려간다고 보면 되거든요 그래서 제일 바깥에가 제일 수준 한 번 이 탭 한 번 들어간 게 한 번씩 수준이 늘어난다고 보면 돼요 그래서 수준 1 제일 바깥에 즉 그냥 제일 큰 프로그램

00:52:58

큰 프로그램보다 이제 그 코드의 제일 바깥에 해당하는 거고 수준 하나에 들어갈 때마다 한 블록이라고 보면 돼요 그러면은 수준, 즉 이 if state condition 1에는 또 다른 if와 else가 있거든요

00:53:23

이 if문 안에 블록 안에 또 다른 if블록과 또 다른 else블록으로 구성이 가능하다는 거예요 그리고 각각에 대해서는 수준2는 컨디션1에 1에 대해서 실행이 될지 안 될지가 결정이 되고 밑에 컨디션2 그러니까 수준3에 해당하는

00:53:47

내용들을 컨디션 2에 의해서 실행이 될지 안 될지가 결정이 돼요. 마찬가지로 else도 else 안으로 들어왔을 때 안에 컨디션 else는 컨디션 1에 해당하는 거고 이 안에 그 다음 if else는 컨디션 3에 의해서 실행 여부가 결정이 된다.

00:54:09

무슨 말인지 이해돼요? 이해 안 되면 이 한 번 더 설명을 원한다고 하면 설명 다시 해줄게요 그럼 큰 문제 없는 것 같으니까 물론 몇 명 대답을 안 하긴 하는데

00:54:31

그래서 일단 들여쓰기가 중요하다는 건 우리 이해가 됐고 그래서 선택문으로 가죠 일단 선택을 위한 조건식은 관계연산자랑 논리연산자를 이용을 해요 그래서 조건식이 만족하면 true, 만족하지 않으면 false의 결과가스에 출력을 하는데 그래서 우리 연산자 다시 한번 보자면

00:54:52

눈 두 개 써서 같다. 앞에 느낌표와 뒤에 눈 써서 다르다. 라는 거 있었고 크다와 작다. 그리고 크거나 같다. 작거나 같다. 이렇게 뒤에 눈을 붙여줌으로써 같다는 내용까지 포함하는

00:55:17

바리기 연산자가 있었고 얘네들을 이것들을 조합해서 쓸 수 있는 다른 논리 연산자가 있어요 그래서 not 붙으면 무조건 반대 t였으면 f가 되고 f였으면 t가 된다 and 그리고 or는 이제 둘 다 참일 때만 true고

00:55:43

나머지는 펄스고, or 할 때는 두 개 중에 하나만 참여도 true. 두 개가 모두 거짓일 때만 펄스인데. 물론 우리 숫자가 아니라 한글도 또는 영어도 비교가 가능해요. 그래서 가방과 가방은 같냐 했을 때 true고,

00:56:06

가방이랑 하마는 같지 않다고 했을 때 트루예요. 다르니까. 가방이랑 하마가 있을 때 하마가 더 크냐 했을 때 트루가 나왔는데 그 이유는 우리 지난번에 얘기했지만 A B C D E F G 이런 식으로 가고 그 다음에 소문자 A B C D 이렇게 가게 되는데

00:56:25

얘는 얘가 만약에 45였다고 하면 그 다음 46, 47 이렇게 쭉 가게 되거든요. 그래서 나중에는 이제 영어 개수가 총 몇 개죠? 알파벳이 26개였나? 그래서 26개를 더해서 나중에 여기 A는 71번으로 시작하는 거예요.

00:56:51

이게 아스키 코드라는 건데 뭐 이게 지금 이 값은 틀릴 수 있어요? 그냥 제가 임의로 적은 거라서 그렇기 때문에 우리 기역, 니은, 디귿, 도부터 이렇게 쭉 있는 거예요 히읗까지 그러면 당연히 기역보다 히읗이 숫자가 더 크겠죠 그래서 하마가 더 큰 거예요

00:57:17

무슨 말인지 이해돼요? 네 그래서 문자도 비교할 수 있다는 거 우리 알았고 다시 한번 낮 얘기하지만 참과 거짓 반대로 바꿔서 T는 F, F는 T로 바뀐다고 얘기를 했고

00:57:43

모두 참일 때만 있어 TT일 때만 TF면 FALSE FALSE하고 TRUE면 FALSE가 나오게 되고 FALSE, FALSE면 FALSE LOCK 그래서 100 이 나오게 되는 거고 OR 연산을 했을 때는 T만 들어있으면 무조건 T라고 했죠 그래서 1110이 돼요

00:58:10

그래서 이런 차이가 있어요 그래서 조건식 얘를 보자면 하나에 대해서 토탈이 100보다 크거나 같은지 이렇게 되어 있는데 우리 제가 좀 전에 지난번에 이렇게는 잘 안 쓴다고 했는데 쓸 수는 있어요 여러분 쓸 수는 있는데

00:58:37

굳이 잘 쓰이진 않아요 그러니까 이제 딱 한 번만 하는 건 상관없는데 뒤에 한 번 더 나올 거거든요 다시 한번 지금 얘기를 하자면 어디 갔을까 저 뒤에 나오는데 지금 당겨서 얘기를 하자면 이런 식으로 학점이 있어요

00:59:00

4.2에 4.5부터 0까지 있다고 했을 때 각 조건이 이래요. 4.2, 4.5, 4.5에서 4.2 이런 식으로 해당하는 조건이 있거든요. 얘네들이 딱 그거죠. 4.5에 지금 같은지 내 성적이

00:59:25

그리고 이 다음 거는 x하고 4.2보다 이상이고 4.5보다는 작아야 되죠. 무슨 말인지 이해돼요? 그럼 그 다음 것도 3.5보다는 이상이고 4.2보다는 작아야 되고

00:59:52

이런 식으로 생각하면 이렇게 될 거예요 스코어는 4.5 4.2는 스코어보다 이상이고 4.5보다는 작고 이런 식으로 계속 되는데 얘는 사실 얘가 사실은 어떻게 표현이 되냐면 4.2

01:00:06

스코어 하고 엔드

01:00:23

하고 여기에다가 스코어가 사 점 오 보다 작은 거에 조합이거든요 맞죠

01:00:51

그죠? 이해돼요? 무슨 말인지? 그러니까 표현은 이렇게 되어 있지만 사실상 연산은 이렇게 두 가지 연산의 조합인 거예요. 근데 이제 보면은 위에서 4.5 했으니까 당연히 이미 4.5에 해당하는 애들은 위에서 걸러져요.

01:01:21

약간 우리 그 영어로 치면은 원이랑 어나더랑 디아더였나요? 이거 이거 다들 알고 있죠? 우리 그 뭐 사과 있고

01:01:45

배 있고 뭐 바다나 있다고 치죠 만약에 이미 위에서 if 사과 이미 우리 여기에서 사과만 남고 얘가 나머지죠 그래서 if 사과 하면은 얘네들은 나머지는 else라고 보면 돼요

01:01:57

무슨 말인지 이해돼요?

01:02:20

아더스 이것도 생각해야 되는데 그래서 사과이면 나머지 이렇게 되고 그리고 만약에 이거는 엘스 더하기 이쁘라서 엘스 더하기 이쁜데 이게 너무 기니까 엘이프라고 줄인 거거든요 원래 앞에

01:02:50

하고 뒤에 와야 되는데 설명을 좀 미리 하려고 뒤로 왔다 보니까 그래서 그 다음에 사과했고 엘리프로 그 다음에 배 했으면 나머지는 뭐예요? 바나나만 남죠 그러고 나면 나중에 남는 거는 사실상 이거 따로 조건은 두지 않았지만 나머지는 바나나만 남을 거예요

01:03:09

이것처럼 지금 이 스코어랑 여기 보면 4.2보다는 크고 4.5보다는 작아야 된다는데 이미 위에 4.5는 해가지고 4.5는 이미 다 걸려져 나갔죠 사실상 얘는 안 해도 되는 연산인 거예요

01:03:35

무슨 말인지 이해돼요? 무슨 말인지 이해되죠? 이것처럼 사과로 다 걸러냈으면 나머지에는 사과가 절대 있으면 안 돼요. 그런데 여기에서 사과가 아닌 거를 다시 한번 찾고 있으니까 연산을 한번 더 해야 되는 거죠. 그래서 얘는 좀

01:03:55

비효율적인 케이스예요 그래서 그러면 어떻게 짜는데요? 라고 했을 때 이런 식으로 짜는 거예요 그래서 스코어가 처음에 4.5 인지 봤으면 그 다음은 4.2 보다 큰지 4.2 이상인지

01:04:19

그러면 4.2보다 큰 애들은 다 이미 걸러졌어요 여기서 그럼 나머지는 이미 4.1 정도에 해당하는 애들이란 말이에요 거기에서 4.1부터 0까지 있을 거고 그럼 이제 또 여기에서 줄 그어서 3.5에 해당하는 것들 쳐내고 그러면 굳이 두 번씩 연산해야 될 필요가 없는 거죠

01:04:44

그래서 하위값만 검사하고 상위값은 검사를 생략해도 된다 그래서 조건비교를 반으로 줄이고 코드가족성도 향상이 된다 무슨 말인지 이해돼요? 이런 구조는 생각보다 잘 써요 여러 번 쓰게 돼요 이렇게 숫자 계산 같은 거 할 때

01:05:04

성적 계산할 때도 지금은 이제 우리 4점으로 했지만 100점 만점에서 0점이라고 했을 때 얘를 이제 다른 식으로 응용하면은 90점 이상이면은 A고 80점 이상이면은 B고 이런 식으로 되어 있다고 하면 처음에 X가

01:05:29

90보다 큰 거 크거나 같다라고 했으면 이제 나머지는 90 밑에 있는 애들만 남아있으니까 굳이 80보다 크고 X 90 이렇게 할 필요가 없다는 거죠 이해되는 거죠 무슨 말인지 이 둘 셋 거라고 생각하고 다시 돌아가자면

01:05:53

쓸 수는 있지만 생각보다 우리는 잘 안 쓸 것이다 그리고 이거는 파이썬에서만 가능하다라는 거 기억하세요? 파이썬에서는 가능하지만 사실상 여러분 나중에 C나 잡아 이런 것들을 하게 됐을 때는 어차피 이해가 안 될 거거든요

01:06:25

이렇게 표현도 가능하지만 어쨌든 이렇게 한 번에 쓰는 거면 상관이 없는데 이렇게 했을 때도 사실 이렇게 나누는 거는 6살부터 60살까지라고 하면 일할 수 있는 나이 나머지는 일을 할 수 없는 사람들을 해당하는 거니까 결국

01:06:52

조건이 한 번으로 끝나진 않아요. 왜냐하면 사람의 나이는 0살은 조금 모르겠지만 1살부터 지금으로서 한 100살 정도 이렇게 되기 때문에 그 구간에 해당하지 않는 사람들이 남아있게 되면 조건식으로도 다르게 쓰일 수 있기 때문에 이제 사실상 이런 식으로 단독으로 쓰는 거 아니면은

01:07:12

결국 좀 불필요한 연산이 들어갈 수 있다 라는 뜻이고요 그 다음에 좀 전에 얘기했던 위의 내용은 결국 이거에 대한 다른 표현일 뿐이다 라고 생각하면 돼요 그래서 뭐 and와 or 아니면 not 이렇게 넣어가지고 조합도 가능하다는 뜻이고

01:07:37

자 그래서 if 드디어 if 제대로 된다 이제 코딩에 한 발작을 꼈다고 볼 수 있는데 가장 단순한 형태의 선택문으로 조건식이 true 말했지만 이 if 블록 안으로 들어가려면 이 조건이 참인 상태일 때만 들어가는 거예요

01:08:01

그때 그래서 그리고 그 밑에 블록에 내가 실행할 거 이렇게 넣어 가지고 쓰는데 그리고 여러분이 생각해야 되는 거 반드시 콜론을 넣어줘야 돼요 내가 이프 쓰고 그냥 깜빡하고 이거 안 넣었다고 하면은 바로 에러 나오거든요

01:08:25

에러 나오는데 그러면은 여러분은 이제 당황하지 말고 아 나 콜론 빼먹었구나 하고 넣으면 돼요 에러에도 콜론 없다고 뜰 거예요 그리고 조건식이 이제 참인 경우에 실행을 도장은 들여쓰기 무조건 들여쓰기 해야지 if 안에 속해 있다라고

01:08:52

보여지는 거예요. 약간 우리 그 캥거루 마냥 캥거루 항상 자기 애기 자기 포 대기에 안고 다니죠. 주머니에. 그것처럼 내가 실행할 거를 들여 쓰기로 이제 주머니로 묶었다고 생각하면 돼요. 그리고 이제 보통 클론 뒤에서 엔터를 쓰면 보통 자동으로 들여 쓰기가 돼서 여기 한 칸 비어 가지고

01:09:15

여기에서 커서가 기다리고 있어요. 근데 만약에 안 된다. 그러면 탭이나 스페이스바로 자기가 직접 들여쓰기를 해줘야 돼요. 그래서 다시 한번 문법을 보자면 if, 컨디션, 그리고 폴론, 그리고 내가 쓰고자 하는 블록,

01:09:41

내용 쓰면 되고요 그래서 컨디션을 평가 혹은 계산한 결과가 트루면 블록을 실행 만약에 false면 블록을 무시하고 지나쳐요 그래서 if하고 변수 넣고 비교현상자에서 비교화된 값하고 조건의 끝을 무조건 콜론으로 표시해준다

01:10:04

그리고 만약에 괄호로 묶어져도 된다고 얘기했죠 그래서 단순하게 쓰면 이렇게 if a가 100보다 작다 해당하는 거면은 이제 100보다 작다를 출력하라는 거고 이때는 뭐가 출력될까요?

01:10:11

두번째 꺼

01:10:39

맞아요. 민준하고 조현. 오늘의 오늘의 답변. 조현. 오늘은 여러분이 좀 졸린 날인가 봐요. 평소보다 답변들이 좀 적네요.

01:11:00

여기는 지금 이 105 150은 당연히 100보다 크기 때문에 이 조건식이 펄스가 되고 이 펄스이기 때문에 이 안에 들어가지 않아서 아무것도 출력이 되지 않을 거예요 그래서 그런 부분들을 살짝

01:11:23

이렇게 되면 조건에 들어갔다는 거야 안 들어갔다는 거야 보통 이렇게 답답하기 때문에 그래서 끝에 가장 바깥 블록 수준에 맞춰서 프린트로 프로그램 끝이라고 출력을 해주면 이 부분 안에 안 들어가고 그냥 프로그램이 끝났구나라고 확인할 수가 있게 되죠 무슨 말인지 이해돼요?

01:11:44

에 좋아요 그래서 좀 전에 얘기했지만 100보다 작다? 하고 이렇게 출력하게 되면은 어떻게 되죠?

01:12:12

진짜 작어가 프로그램 끝이 원래 작지 않음에도 진짜 작다라는 게 출력이 되겠죠. 그래서 들여쓰기를 잘 맞춰줘야 된다는 게 진짜 작다라는 내용이 안으로 들어간다는 거예요. 들어가야 된다는 거예요. 그래서 이런 실수 초반에 굉장히 많이 해요. 들여쓰기 하다 보면은.

01:12:36

여러분 헷갈려서 자주 바깥으로 빼게 되는데 내가 출력을 했을 때 내가 원하지 않은 값이 나온다 라고 하면은 그럴 땐 이렇게 이프문 쪽으로 가서 내가 프린트를 잘했는지 확인해야 돼요 그리고 이제 대망의 엘스가 다시 나왔는데 우리 영어로 엘스는 뭐예요?

01:13:01

혹은 이죠 그래서 나머지라고 봐도 되고 그래서 if의 조건 참 인거에 대한 내용을 했으면 조건이 거짓인 경우도 있겠죠

01:13:26

또 다른 무슨 말인지 알죠? 무슨 말인지 이해 돼요? if라고 하는 하나의 조건을 했으면 그 나머지 에 대한 내용을 else로 문는다고 보면 돼요 무슨 말인지 이해 돼요?

01:13:50

안녕.

01:14:28

그래서 아까 말했지만 사과 대 바나나 있다고 했을 때 사과였으면 else에는 얘네들이 else가 되는 거예요 나머지 그래서 만약 뭐뭐라면 불러기를 실행하고

01:14:52

그렇지 않으면 블록 투 한다. 이 케이스를 많이 쓰는데 사실 엘이프 해가지고 조건이 거짓일 때라고 쓸 수도 있거든요. 근데 이러면 한 번 더 비교를 해야 되는 거잖아요. 조건이 거짓인 케이스에 대해서 조건이 거짓이라기보다는 이제

01:15:15

여기가 이제 조건 사과인 거고 이 LF에서는 조건 not 사과 이렇게 써야 되는, 이렇게 써진다는 얘기죠 그러면 결국 사과인 거랑 이미 else로 나머지가 있는데 굳이 조건 사과가 아닌 거 해가지고 다시 뽑을 필요가 없다는 거예요

01:15:37

무슨 말인지 이해돼요? 네 그래서 보통 일때 쓰는게 그래서 if 조건 남자 그럼 el 쓰면 보통 이제 남자가 아니라 여자들이 el스에 걸리겠죠 이런식으로

01:16:01

보통 두 개 정도 케이스가 있을 때는 이제 if랑 else 물론 좀 전에 얘기한 것처럼 사과랑 나머지가 있는 케이스에도 쓰기는 해요 근데 이제 주로 이렇게 분리되는 거에 자주 쓰이는 편이에요 이렇게 세 개 있는 케이스에는 보통 사과, 배, 바나나 각각으로 하기 때문에 이거는 그 뒤에 나오는 다른 케이스입니다

01:16:25

선택문이 다른 종류의 선택문이 되고 그래서 좀 전에 얘기했지만 20보다 큰 거 아니면 20보다 작은 거로 해서 else는 이 조건이 아닌 거에 대한 거라서 else 쓰고 조건 필요 없이 바로 콜론 쓰면 돼요

01:16:45

좀 전 얘기했지만 정반대되는 상황에서 굳이 if문을 사용해서 다시 한번 조건을 비교하는 거는 낭비다 그래서 선택문이 두 가지로만 구분이 될 때는 if와 else를 사용하면 비교를 한 번만 하므로 효율적이다 이 얘기였어요 아까 좀 전 얘기한 게

01:17:06

A가 80일 때 작다인지 크다인지 이렇게 할 수가 있게 되는 거죠 그리고 여기에서도 이렇게 나오긴 하지만 프로그램의 끝을 알려줄 때 프로그램 끝

01:17:27

추가적으로 바깥에다가 써줘야 된다. 17분인데 조금 이따 얘기하고 쉬고 30분에 만날게요.

01:20:15

감사합니다.

01:24:46

감사합니다.

01:27:26

감사합니다.

01:28:11

감사합니다.

01:30:35

자 다들 돌아왔나요? 네 자 그래서 이 다음은 패스라고 하는 건데요 파이썬에서는 아무것도 실행하지 않는 패스라는 걸 쓸 수가 있어요 여기 아래처럼 보이는 것처럼 이렇게 패스

01:30:58

그래서 파이썬 코드는 이 조건식을 해놓고 앞에 안에다가 아무것도 안 쓰면 에러가 나거든요. 이렇게. 이렇게 빈줄 삽입해놓고 실행을 해보면 에러가 나요. 그러니까 여기 아무것도 없는데

01:31:21

들여쓰기가 바깥으로 빠져나와 있잖아요. 그러니까 얘는 어? 여기 들어갈 되는 애 아니냐? 이렇게 생각을 해서 에러를 뽑는 건데 이 에러를 피하기 위해서 이 패스를 써주는 거예요. 이러면 아무 동작도 하지 않는 걸 의미하거든요. 다만 여기 else에서는 이 코드상에서는 printx를 해주게 되는데

01:31:44

if 조건문 사용했을 때는 무조건 들여쓰기를 4칸을 넣고 사용해야 된다는 그런 기준이 있어요. 문법적인 기준이에요. 그래서 얘는 무조건 다음에 오는 게 들어가야 되는데 그래서 안 맞는다는 거예요. 지금 들여쓰기가. 나중에 구현하려고 미리 짜둔 거라고 했을 때는 이제

01:32:06

패스를 써서 넘겨도 되고 아니면 에러를 자기가 직접 일으킬 수도 있는데 그건 이제 이렇게 rise라고 하는 거를 사용해서 에러를 일으키는 거예요 그래서 에러명이 not implemented error라고 해서 아직 미구현이다 라고 하는 에러를 일으키는 거예요 얘는

01:32:29

이제 이런 에러 처리는 나중에 후반에 배울 거고 중요한 거는 이제 미리 나는 틀만 짜두고 싶다 그럼 이 안에다가 미구연인 거는 그냥 패스라고 써주면 된다라는 거 잊지 말고요 하지만 패스 해놓고 넘어갈 게 아니고 여러분은 체크해서

01:32:51

나중에 넣어줘야 돼요. 구문에 맞는 거를 써야 되는 거 그리고 이제 중첩 선택문이라는 게 있는데 그게 뭐냐면 일단 예제를 보죠. 이 놀이공원의 독수리 자전거라는 놀이기구는 키가 100cm 이상 몸무게가 40kg 이상이어야지만 탑승이 가능하대요

01:33:15

이 프로그램을 작성하라고 하는데 반드시 if와 else 선택문만 써야 되는데요. 두 가지 조건의 만족이니까 논리연산자 end를 쓰면 되는데 키가 100cm 이상이고 몸무게도 40kg 이상인 걸 이렇게 묶으면 true와 false가 되는데

01:33:40

키는 100이 넘어도 몸무게가 39kg일 수 있죠. 무슨 말인지 이해돼요? 그래서 좀 전에 얘기했지만 얘는 탑승이 가능하고 나는 불가능한데 어떤 부분에서

01:34:02

좀 전에 얘기한 것처럼 어떤 부분에서 불가능한지가 알 수가 없어요 키는 100이 넘었지만 아까 말한 데 39이거나 아니면 몸무게는 41이지만 키가 99cm라던가 이런 케이스가 있을 수 있죠 그래서 중첩 선택문을 이용해서

01:34:27

어느 부분에서 에러가 나는지를 알려주는 거거든요 그래서 먼저 키가 먼저 나와서 트루인지 펄스인지 보고 이미 그래서 키에서 펄스가 나면 탑승이 불가능하다 그 다음에 키는 통과하고 몸무게로 넘어가면 이제 그 다음에 못하면 몸무게 때문에 못하는구나 라고 확인할 수가 있게 되죠

01:34:55

그리고 탑승 가능한 사람들은 이거 둘 다 통과하는 사람들이고요 그래서 그 각각에 대한 결과는 이렇게 통보를 하게 되는데 그래서 중첩 선택문이라는 건 IF 안에 IF S가 한 번 더 있는 거를 중첩 선택문이라고 해요 근데 굳이 뭐 꼭 중첩이라고 말은 잘 안 하는 거고 그냥 IF문 두 개 쓰면 되지 않냐 약간 이런 식으로

01:35:16

나이브하게 얘기를 하게 되고 그래서 보면은 컨디션 1을 평가하고 그 계산한 결과가 트루인 다음에 컨디션 2를 평가했을 때가 트루면 블록 1이고 근데 이 결과에서 얘가 펄스면 블록 2가 실행이 될 거고

01:35:41

애초에 컨디션 1에 해당하는 조건이 해당하지 않는다면 블록 3이 실행이 된다 라는 뜻이에요. 굳이 그림으로 그리자면 이렇게 그림이 그려지게 되고 이 동그란 거는 각각에 대한 출력을 모은다는 얘기예요. 이렇게 되고요. 그 다음에

01:36:03

이제는 반대로 if 안에 걸리는 게 아니라 else 안에 다른 거 다른 조건이 들어갈 수 있죠 그래서 컨디션 1에 해당이 되면 블록 1이고 컨디션 1에 해당하지 않으면서 컨디션 2에 해당이 되면 블록 2 컨디션 1에 해당하지 않으면서

01:36:30

컨디션 2에도 해당되지 않으면 블록 3이 실행이 되는 이런 식으로 해석을 하면 돼요 그래서 얘가 어떻게 그려지냐면 이제 펄스로 가서 펄스에 대해서 트루냐 펄스냐 한 번 더 나눠져서 블록이 이렇게 그려지게 된다

01:36:53

유사하지만 살짝 다른 모양의 순서도죠 순서도 그릴 때 모양을 잘 확인하는 거고 그 다음에 중첩 선택을 사용하면 돼 이제 다음 요구사항에 따라서 작성한 프로그램이 있어요

01:37:10

이 프로그램의 잘못된 부분을 골라서 고쳐보세요 어느 부분이 잘못됐을까요?

01:38:02

그죠? 부등호 방향이 잘못되어 있죠. 좀 전에 미만인 경우 키드인데 그래서 일단 10살보다 크면 이제 스튜던트냐 어덜트냐가 갈리는 거고 아니면은 그건데 일단 미만인 거는 여기 키드에 걸리고 그 다음에

01:38:24

age가 20보다 크려면 굳이 다르게 얘기하자면 여기에서 조건만 바꾸자면 이 모양으로 바꾸거나 이 상태라고 하면 프린트문 이거 두 개를 바꾸거나 이런 식인 거죠 무슨 말인지 이해돼요?

01:38:48

여러분이 프롬프트를 통해서 짜라고 했을 때 아직 이 AI는 완벽하게 사람의 말을 이해 못할 때 있잖아요. 나는 분명 A를 시켰는데 갑자기 이상한 결과를 뿜을 때 있지 않았나요?

01:38:57

그런 적 없어요?

01:39:26

저만 그런가요? 저 같은 경우는 예를 들어서 말을 이제 고치라고 해요 말을 뭐뭐 했다 형태를 뭐뭐 했습니다로 고치라고 하면 하면 했다만 고치면 되잖아요 근데 가끔

01:39:52

바보같이 이다도 합작했습니다로 고치는 거예요 이런 식의 결과를 얻은 적 없나요? 저만 그랬나 아직은 없어요 여러분은 아직까지 큰 문제가 없었다는 거 아하 은재는

01:40:14

있었군요. 그죠? 그래서 내가 잘 설명했음에도 불구하고 얘가 어떻게 그거를 중간에 잘라가지고 인식을 하냐에 따라서 이런 식으로 표현이 될 때도 있거든요. 하지만 나는 얘가 잘 짰겠거니 하고 가만히 있으면 이렇게 잘못된 프로그램이

01:40:39

생성되었을 수도 있는 거죠 그러니까 여러분은 무조건 코드를 보던지 아니면 실행을 해서 그 결과가 내가 원한 게 제대로 나오는지를 잘 확인을 해야 돼요 그거를 보려면 여러분의 코딩의 이런 간단한 기본은 알고 있어야 얘가 제대로 짰는지 안 짰는지를 확인할 수가 있겠죠

01:41:00

그래서 이제 엘이프가 드디어 등장했는데 엘이프는 이프 이프는 이제 각각에 해당되는 거라서 그러니까 사과 배 바나나가 있을 때 처음에 조건 이프로 걸었어요 그 다음에 그 다음 배를 또 이프로 하면은

01:41:24

그 나머지는 이제 사과와 바나나가 남거든요 그래서 이게 아니라 이 조건과 이 조건을 해당하지 않는 다른 거에 대한 거를 볼 때 else if를 넣었는데 단지 이게 너무 길어서 줄여서 el if라고 말을 하게 되고요 el if 배하고 나면 나머지 else는 무조건 바나나가 된다

01:41:46

이런 식으로 여러 데이터가 있을 때 각각에 대한 조건으로 하는 거예요. 예를 들면 이제 그런 거죠. 우리 사계절 얘기를 하면 1월부터 12월까지 있다고 했을 때 보통 12월이

01:42:07

1, 2는 겨울, 3, 4, 5는 봄 이런 식으로 해서 여름, 가을 이렇게 나눴었죠

01:42:26

그럴 때는 이제 if 12, 12 하고 나서 그 다음 form을 하기 위해서는 elif를 쓰자는 거예요 무슨 말인지 이해 돼요?

01:42:51

발명이 좀 뭉뚱그러지게 되긴 했는데 무슨 말인지 이해되죠 우리 그거랑 똑같은 거예요 원이랑 어나더 어나더 어나더 어나더 이렇게 가듯이 그렇게 하는 거고 그래서 에리프는

01:43:14

필요한 수만큼 계속 나타낼 수가 있어요 그리고 모든 컨디션을 만족하지 하면 블록 N을 실행하는 그런 형태가 되는 거고 그래서 뒤에 보면 If A가 20보다 큰 거 20보다 작은 거고 그럼 나머지 else는 무엇에 걸리죠?

01:43:46

맞아요 이때는 A가 표현되지 않지만 이거인 상태인거죠 무슨 말인지 이해 돼요 이제? 네 좋아요 그래서 좀 전에 얘기했지만 열해서 성인인지 학생인지 어린인지 할 때 if와 l if와 else 알겠습니다

01:44:11

이렇게 쓰게 되면 if 안에 또 if 이렇게 굳이 넣지 않아도 풀어서 쓸 수가 있게 되는 거죠 그래서 다시 얘기하지만 이렇게 if, if, if, else 이렇게 하게 되면 세 번을 비교를 해요

01:44:34

조건의 수가 많아질수록 실행 시간이 짧아지는데 가독성은 낮아져요. 그러니까 1, 2, 3, 4, 5, 6, 7, 8을 각각을 입력받아서 쓰고 싶은 건데 이렇게 쓰면 사실 가독성이 좀 낮은데 오른쪽을 보면

01:45:00

if, l, if 해서 총 8번의 비교가 연산이 필요하거든요 그래서 조건의 수가 많아질수록 프로그램의 실행시간이 길어져요 하지만 우리가 알아보기는 쉬워요 무슨 말인지 이해돼요? 이런 차이가 있다

01:45:34

그러니까 얘는 이 하나 조건 이 큰 거에서 if, erif 이렇게 해서 하나씩 하나씩 이렇게 잘라내고 있다고 하면은 얘 같은 경우는 이 큰 거에서 퉁 자르고 이 나머지에서 다음 것도 퉁 잘라서 여기에서 이렇게 한 번 더 퉁 자르는 거잖아요. 그러니까 세 번 만에 이렇게 비교가 되지만 얘는 이 전체에서 하나하나 집게로 집어내고 있다고 생각하면 돼요. 무슨 말인지 이해돼요?

01:46:00

네 좋아요 그렇게 되고 그래서 여기는 아까 얘기했듯이 이런 식으로 쓸 수는 있지만 결국 얘도 엔드로 하나하나가 나뉜 거를 조합되어 있는 거고 이렇다 보면 불필요한 연산이 생기기 때문에 생각보다

01:46:27

잘 쓰지 않는다 라는 걸 기억해두시고 그래서 false 변환인데 false는 이제 빈 컨테이너를 이제 false 그러니까 무조건 비면은 빈 칸 또는 0 이런 애들이 false라고 했었죠 그래서 non이나 0.0, 빈 문자열, 빈 바이트, 빈 리스트 이런 애들이 다 false로 변환이 돼요

01:46:50

여기 보는 것처럼 0이면 0은 false로 변환이 된다 라고 나오는 거예요 그러니까 만약에 0이 true였으면 얘가 출력이 될 건데 얘에 걸리지 않고 else에 걸렸으니까 0은 false다 라는 거고 마찬가지로 여기 지금 공백도 아니라 아예 빈 거죠

01:47:15

빈 문자열도 마찬가지로 볼수록 변환된다 라는 걸 볼 수가 있어요 여기까지 이해됐어요? 네 그러면 오늘의 실습을 실행해보죠 오늘의 실습인데

01:47:24

감사합니다.

01:47:39

10분.

01:47:59

네, 감사합니다.

01:48:09

보이나요?

01:48:52

그래서 오늘 실습 1 학번 이름 쓰고 여기 블랭크 1, 블랭크 2, 블랭크 3에 어떻게 들어가야지 두 개의 변수의 정수를 입력받아서 두 값이 같은지 출력을 할 수 있을까요?

01:49:25

어? 살짝 틀린 것 같은데? 아, 맞아요. 그렇게... 아, 그냥 한 번 했었구나. 그렇게 쓰니까... 어, 됐는데 조건이 아니죠, 여러분. 지금 쓴 게. 그러면, 자, 여기 일단 우리 입력받아야 되니까 블랭크2는 인풋이 돼야 될 것이고

01:49:51

여기도 마찬가지로 input이 돼야 되고 정수를 입력받는다 그랬으니까 정수를 입력받는 거 int로 바꿔줘야겠죠 여기까지 이해 돼요? 그러고 나서 입력한 두 값이 같다라고 하려면 여기는 이제

01:50:15

A는 B와 같은지를 해야 되는데 A는 B 땡땡으로 끝나면 안 돼요. 어떻게 되냐 이러면 열심히 써준 친구들 다 틀렸는데 맞아요. 민준님 반대로 여기

01:50:36

그래서 아까 말했죠 if 하고 내가 콜롬 빼먹으면 나 얘를 기대하고 있는데 하고 문법 에러가 났다고 알려주는 거예요 무슨 말인지 이해돼요? 그러니까 이런 케이스들은 찾기 쉬워요 바로 알려주기 때문에

01:51:01

그리고 여기 이렇게 라인 4라고 알려주잖아요. 이게 위에서부터 네 번째 줄에 났다는 건데 이거 그러면 어디서 봐요라고 할 수 있는데 여기 그러면은 도구 가서 설정 가서 설정에서 편집기로 가고 편집기에서 행번 혹은 나는 들여쓰기 가이드도 보고 싶다.

01:51:12

라고 하면 둘이 이렇게 체크해줘요. 그러면은 여기 보여요? 바 조그맣게

01:51:38

왼쪽에 오하고 왼쪽에 이렇게 살짝 줄 있는 거 보여요? 좀 전에 말했듯이 들여쓰기 가이드를 쓰면은 내가 들여쓰기를 잘 하고 있는지 볼 수가 있어요. 여기 도구 가서 설정. 설정에서 편집기.

01:52:00

편집기에 행번호 표시 들여쓰기 가이드 표시를 하면 왼쪽에 지금 몇 번째 줄에 있는지 그리고 들여쓰기 한 거는 어디서부터 어디까지인지 여기서 또 이 풀을 쓰고 A는

01:52:24

뭐 말도 안 되는 조건이긴 하지만 지금 여러분 보여주려고 하는 거니까 이런 식으로 쓰게 되면 안에 줄 하나 더 새로 생긴 거 보이죠 내가 아직 if 들여쓰기 가지고 좀 보이는 눈이 잘 없다 하면은

01:52:45

이 도구를 이용해서 들여쓰기 위치까지 보는 거 추가해서 보시면 돼요 그리고 라인샷라고 이렇게 에러가 났을 때 행번호 출력하면 바로 이렇게 4번으로 가서 어느 위치에서 에러났는지를 확인할 수가 있어요 여기까지는 이제 문제없고

01:53:10

10 넣고 10 하면 입력한 두 값은 같다 이렇게 나오게 되고요 그 다음 거 여기도 마찬가지로 점수를 입력받는 거니까 구분점수가 없다는 가정에 여기는 뭐가 되죠?

01:53:33

인트 여기도 마찬가지로 다시 입력하라고 한 거니까 딱 봐도 인풋이겠고 90점 이상이면 이니까 스포어가 네 맞아요 90

01:53:56

이렇게 쓰면 되겠죠. 그래서 장학금 대상자인지 만약에 아니면 그냥 수고하셨습니다. 라고 출력해준 거예요. 48점이면 그냥 수고했다. 라고 출력을 해준 거고. 그리고 서로 다른 두 정수를 입력받아 어느 값이 더 큰지 출력하는 프로그램.

01:54:14

이 위는 사실상 이 위랑 똑같죠 이 위에 거 두 개 그냥 가지고 와서 붙여넣기 하고 여기는 이제 어떻게 써야 돼요?

01:54:42

if만 쓰고 끝인가요? if a다 b보다 크다 아니면 이제 두 번째 값이 크다인데 여기서 살짝 하나 놓친 게 있죠 뭘 놓쳤죠?

01:55:08

같은 때, 그렇죠. 등호가 빠졌죠. 근데 여기에 이제 서로 다른 두 정수라고 썼으니까 같은 거를 굳이 입력이 되지 않을 거다라고 일단 우리는 생각하고 있는 거잖아요. 그래서 이 if와 else로 처리를 해도 된다.

01:55:32

라는 거예요. 이해돼요? 무슨 말인지? 이미 문제에서 서로 다른 두 정수를 받는다고 했으니까 둘이 같은 건 우리 일단 생각을 안 하는 거예요. 이거는 사용자가 잘못 입력을 한 거니까. 그런데 보통 사용자는 기상천외한 일을 하기 때문에 전처리를 해주는 게 좋죠.

01:55:58

입력한 숫자가 짝수인지 홀수인지 계산하는 프로그램을 작성하래요 여기도 이제 마찬가지로 이제 그거죠 인출일 거고 여기도 인풋일 거고 저는 알고 있으니까 그냥 앞에부터 푼 건데 여러분은 안에서부터 풀어야 되는 게 맞죠

01:56:23

자 여기는 어떻게 풀어야 돼요 우리 오드랑 이분을 할 건데 나연이처럼 퍼센트 데이터에 나머지가 위로 나눈 나머지가 0이면 짝수고

01:56:42

짝수가 아니면 나머지는 전부 다 홀수죠? 그래서 이런 식으로 3번이 어떻게 오류가 나요?

01:56:53

한 번은 우루 날 게 없는데?

01:57:23

한 번은 오류 안 나고 점수 입력했을 때 이 짭수입니다 이렇게 원래 점수는 아니고 숫자를 입력하세요죠 그리고 정수를 입력받아서 양수인지 음수인지 0인지 판단하는 프로그램을 작성해보래요

01:57:49

if 또는 if-else 분만을 사용하고.포맷을 쓰래요. 그럼 여기는 우리 좀 전에 했던 것처럼 여기는 당연히 int하고 안에는 input이고 0이다라는 걸 표기하고 싶을 때는 어떻게 해야 되죠?

01:58:21

일단 먼저 얘가 맞아요 if num이 0하고 같거나 그거보다 크거나 아니죠 밑에를 일단 봐요 얘는 음수고 얘는 0입니다와 양수입니다가 안에 들어가잖아요 그러니까 얘는

01:58:43

0보다 커야지 무조건 음수죠 그래서 여기는 else가 되겠죠, 여기에서 0 이상이어야지만 밑에가 else로 음수가 다 걸러지니까요 그러고 나서 이 다음에 이 안에서

01:59:07

if, num이 0. 그리고 만약에 0이 아니면 그때는 나머지는 다 양수인 거죠. 그래서 양수입니다고 했을 때 점 포맷하고 num 이렇게 써주면 정수를 입력했을 때 10이 10.

01:59:32

12는 음수입니다 이렇게 뜨는 거고요 이렇게 각각 뜰 거고요 만약에 이거를 if와 lf 구문으로 쓰게 되면은 여기는 마찬가지로 동일하고 그리고 여기는 이제 했던 것처럼 이제 양수와 음수와 나머지

01:59:59

일단 제일 마지막에 있는 건 대부분 L 쓰고 여기는 음수니까 L2 거꾸로 쓰고 있는데 원래는 그거죠 넘이 0보다 작은 거

02:00:16

if 하고 num이 0보다 큰 거 이렇게 쓰면 되겠죠 무슨 말인지 이해돼요?

02:00:42

이게 되죠? 그리고 다음에 조건을 반드시 지켜서 실행 화면과 같이 출력해보래요 번호 입력을 받아서 이렇게 출력할 건데 여기는 이제 여러분 다 알 것이고 여기는 어떻게 하면 될까요?

02:01:06

여기까지는 기본이고 이제 3번부터 이거 어디서 많이 봤는데 그죠 if랑 if랑

02:01:29

사실 여기만 쓸 거고 나머지가 다 엘이프로 되겠죠. 여기도 여기도 여기도 여기도 이거고 이제 나머지 더

02:01:55

잘못 입력한 거에 대해서 알려주는 거고요 그래서 이 부분들이 이제 if와 elif와 else문이 될 거예요 이런 식으로 오류 처리 입력에 대해서 잘못 입력된 거에 대해서 내용을 써주는 사실상 여러분의 연습 문제예요

02:02:15

어떤 수가 두 자리 수의 짝수인지 확인하는 코드를 각 조건에 맞게 작성하래요. 1번은 그냥 if else 문으로 쓰고 두 번째는 중첩 if else 문으로 짜면 돼요.

02:02:41

우리 이거 생각하면 되는데 얘가 중첩 else죠. 우리 기본적으로 이렇게 쓰려면 그냥 if else로 쓰면 조건을 한 번에 쓸 수 있다고 얘기했었죠. 그래서 조건 한 줄로 쫙 쓰는 거가 이거고 그걸 나눠서 쓰는 게 중첩.

02:03:06

if else로 쓰면 되고요 자 그리고 80점 이상을 맞으면서 성적이 a 80점 미만이고 50점 이상을 맞으면 b 50점 미만을 맞으면 c가 된다고 가정할 때 75점을 받아서 b를 출력하는 경우에 대한 프로그램을 작성하면 돼요 여기 작성하고

02:03:28

아 네 1번은 인력을 받으면 헷갈릴 수 있으니까 그냥 요 넘 땡땡 55로 하죠 이렇게

02:03:59

왜 저렇게 읽어오지 파일을 여기서 열기를 하세요 여기 여기에서 열었어요 노트 열기 여기서 노트 업로드해서 올리면 돼요 줄만하다 번호 표시는 도구의 설정에 편집기를 가서

02:04:25

내려보면 행번호 표시와 들여쓰기 가이드 표시가 있어요. 여러분이 취향껏 선택하세요. 어떤 번 얘기하는 거예요? 몇 번? 점수 문제예요? 이거? 그 조건은 필요 없고 딱 그냥 여기까지만 하세요.

02:04:50

아니다 100보다 작은 거는 해줘야 되죠 점수는 100 이상인 거는 안 되니까 100 이상이 아니라 100 초과

02:05:03

어떤 수? 네, 두 자릿수의 짝수인지는 그거고

02:05:25

그 다음에 연습 문제 3. 채용시험에서 영어 점수와 국사 점수를 입력받아서 합격 여부를 출력하는 프로그램을 작성한대요. 영어 점수와 국사 점수 합쳐서 150점이 넘으면 합격인데 각 과목의 점수가 60점 미만이면 불합격이에요.

02:05:48

그래서 둘 합쳤을 때 150점 넘어서 합격이고 90과 50은 일단 총합 점수가 부족해서 불합격이고 넘었지만 복사 점수가 60이 안 돼서 불합격하고

02:06:10

그래서 이거에 맞춰서 출력을 해보세요 넘 55로 해두고 푸는 게 이제 채점할 때 용의해서 55로 정해두고 하세요 2번 문제는 문제예요

02:06:19

입력 값이 써져 있어요

02:07:06

실습 문제는 괜찮고 적어도 연습 문제는 위에다가 이거 적어주세요. 물론 여기다 그냥 이름 이렇게 써도 되고요. 쓰는 거 귀찮겠지만 여러분을 위함이니까 써주세요. 150점이 넘으면 합격이라는 거는 150점 포함이죠.

02:07:28

네 다 했으면 나가면 돼요. HTML 변환하는 거 잊지 마요 여러분. 써놨지만 HTML로 변환해서 제출하세요. 네 고생했습니다.

02:07:53

네 백점 넘으면 안 된다는 것도 적어주세요

02:08:08

썸은 들어 왜... 네?

AI 앱 보안 실수와 체크리스트 | Alt