혼자 공부하는 파이썬 개정판 68강 - 5-02절 확인문제: 기본 형태
HTML-код
- Опубликовано: 9 янв 2025
- 이 책에서 문제 이해까지 포함했을 때 가장 어려운 문제입니다.
5-2절과 5-3절 확인 문제 도전 문제만 넘어가면....
이후의 내용은 사실 이전 판 강의와 크게 차이가 없고[추가 개념 설명 정도 밖에 없음]
이전 판 강의를 보면 아시겠지만 얼마 없습니다. 100-110강 정도로 끝나겠군요[...]
하지만 유튜브 수입은 강의 하나에 2천원[쭈르륵][...]
참고적으로 유튜브 영상 아래를 보시면 놀랍게도 Super Thanks라는 기능이 있습니다[...][6년 동안 2만원 받아봄][...]
참고적으로 강의에서는 Mermaid라는 Markdown 다이어그램을 활용했는데
글씨를 정갈하게 보여드리려 사용한 것이지[...]
종이에 연필로 그래프 그리는게 훨~~~씬 편합니다.
한숨과 병신같은 이야기에서 백번 공감하고 갑니다.
나름 좋은 경험이었습니다. 앞전 재귀함수 강의에서는 패토리얼 리턴 값들이 스택위로 가면서 할당되는 모습이었는데.
이번 문제에서는 그런 모습이 보이지 않아 좀 헷갈리기도 했는데. 컴퓨터 매모리구조가 어떻게 돌아가는지를 좀. 맛볼 수 있는 기회였네요. 3일 정도 고민하고 파이썬 튜터 보면서 따라가다 놓치기도 하고. 하면서 겨우 따라 갔네요. 좋은 강의 감사합니다.
오늘은 정말 이해하는 데 급급했네요.
보면서 제가 이걸 제대로 이해하고 있는지 가늠이 안되네요 :<
몇번 더 보면서, 그리고 말씀하신 python tutor를 이용해서 이해도를 높여보겠습니다.
감사합니다.
이번 문제와 다음 하노이탑은 초급 단계에서 굉장히 어려운 문제입니다!
댓글로 다른 분이 "백준코딩 플래티넘인데 아직도 풀지 못했다"라고 하시는 것처럼
문제는 "아.... 뭐 이런게 있구나.... 차근차근 이해해봐야지...."해주셔도 괜찮습니다!
안녕하세요. 감사히 잘 봤어요.
전체 영상 마치고 다시 반복해서 기억지속하려 해요.
1시간이 아니라 며칠이 걸려도 방법을 찾기 어려워요.
2023년 7월 23일 일 14시33분 태평양 시간
오늘도 감사합니다!
다른 문제들은 어려우면 어렵다 써있는데 이 문제는 '전형적인 예제'라고 써있어서... 제가 너무 바보인건가 분해서 4일을 매달리며 고민했습니다...ㅠㅠ 참다참다 답지도 보고 유튜브까지 왔는데, 허탈하네요 아예 시작부터 접근법이 잘못됐더군요... 초반에 말한 깊이우선 너비우선 이 문제인가 싶었습니다.
저는 모든 가능한 경우의수를 검산해서 카운트 하는 방식을 썼거든요...
감사합니다!
이 문제가 정말정말 어려운 문제입니다!!! 앞으로 처음 마주하시는 알고리즘 문제들은 "내가 바보인가?"하는 느낌을 많이 받으실텐데
절대 그런 것이 아니므로 바로바로 답지 보시면서 여러 번 풀어보시면서 나아가면 좋을 것 같습니다!
자존심 상한다... 못풀겠다.. 다음번에는 꼭 풀어낸다....
안녕하세요. 감사히 잘 봤어요.
복잡 방대하네요.
2023년 7월 10일 월 21시36분 태평양 시간
몇일 몸살로 사경을 헤매이다가 정신을 차리고 들어와보니 알고리즘문제라니... ㅠㅠ
그래도 지금은 나으신 것이니 다행이군요!!
질문있습니다. 테이블나누기 문제 책에 제시한 답안 부분에 변수로 '안힐수있는최대사람수' 를 선언하고 함수안에서 for i in range(앉힌사람수, 앉힐수있는최대사람수+1)로 함수외부에 선언된 변수를 참조하는데 어떻게 global 키워드를 사용하지 않고도 함수외부의 변수를 참조할수 있는지가 궁금합니다.! 이 문제는 이해하기 어려워 한숨 세번째 쉬고 다시 보고 있습니다.
정확하게는 "외부 스택에 있는 변수의 값을 변경할 때"에 global 키워드를 붙여야 합니다.
관련된 내용은 다음 강의를 참고해보시면 좋을 것 같습니다!
ruclips.net/video/9tbjjZb65ng/видео.html
선생님 11:24에 max(2,이전화살표에적힌숫자)는 왜 하신 건가요? 이 부분이 이해가 잘 가지 않네요
앗 없어도 됩니다.
이게 "생각의 흐름대로 빠르게 푸는 모습"을 보여드리다보니
그냥 무의식적으로 """변수 '이전화살표에적힌숫자'가
2 미만도 나올 수 있지 않나?"""라고 생각해서 추가한 것입니다.
근데 전체적으로 코드를 보면
range(2, ㅇㅇ)으로 그래프(노드 - i, i)를 호출하므로
2 미만의 값 자체는 나올 수 없으므로 제거하셔도 괜찮습니다!
@@윤인성 선생님 말씀은 range(max(2,이전화살표에적힌숫자),min(노드,10)+1) 자리에 그냥 range(2,min(노드,10)+1)가 들어가도 된다는 건가요? 그런데 이렇게 적으면 정답이 5가 나옵니다.
제가 궁금한 점은 (2,4)와 (4,2)가 겹치니 (4,2)를 제거해야 하는데 그 방법이 왜 range(max(2,이전화살표에적힌숫자),min(노드,10)+1) 인지입니다.
앗 이동 중에 스마트폰으로 화면을 봐서 헷갈렸는데
range(max(2,이전화살표에적힌숫자),min(노드,10)+1) 를 그대로 해주셔야 하고
이를 활용하면
10:36 에서 언급하는 것처럼
"이전화살표에적힌숫자" 이상인 숫자보다 탐색을 시작하기 때문입니다.
따라서 (2, 4)와 (4, 2) 중에서
(4, 2)는 존재할 수 없습니다.
(2, 4)만 탐색합니다.
PS. 2→4처럼 "이전화살표에적힌숫자" 이상인 숫자만 탐색하기 때문입니다.
10:03 에 있는 그래프를 함께 보시면 조금 더 이해가 쉬운데요.
무조건 "이전화살표에적힌숫자" 이상 숫자들만 탐색하므로
그래프에서 3→2와 4→2를 탐색하지 않습니다.
@@윤인성 친절한 설명 감사합니다 선생님!
어렵지만 90프로 정도 이해했습니다...
선생님 너무 이해가 안되서 질문 드립니다....
선생님이 작성하신 코드에서는 리턴값이 없는데 함수로 계속 돌아가는 모습이 보입니다. 그건 어째서인지 궁금하고 반복문에서 설명하시는 설명이 저한테는 조금 어렵게 느껴져서 조금만 더 자세히 설명해주실 수 있는지 여쭤봅니다...
어떤 코드 부분인지는 모르겠지만
함수는 return 키워드를 명시적으로 안 써도 끝나면 원래 위치로 돌아갑니다(None을 들고 돌아갑니다).
반복문은 해당 부분을 조금 더 반복해서 살펴보시는 것을 추천드립니다. 반복문이 어려우셨다면 함수 이해는 더 힘들므로, 반복문 부분부터 천천히 살펴보시는 것을 추천드립니다.
선생님 안녕하세요 요즘 선생님 강의로 파이썬 공부하는데 이해가 잘되서 감사하게 잘보고 있습니다ㅠㅠ 혹시 C#강의는 안하시나요?
c#은 대학 교재로 출간해서 😂.... 교수님들의 항의가 들어올 수 있어 강의를 찍지 못합니다 😂
@@윤인성 그렇군요ㅠㅠ 아쉽네요 알겠습니다 앞으로도 좋은 강의 부탁드려용~~
어렵네요 ㅜ 천천히 이해 해볼게요 ㅇㅅㅇ
2024.09.06
선생님 람다 파트강의를 보다가 궁금한게 있어서 질문 드립니다.
직접 해보는 손코딩 map()함수와 filter()함수를 보는 중
def power(item):
return item * item
def under_3(item):
return item < 3
list_a = [1,2,3,4,5,6]
print(list_a)
output_a = map(power, list_a)
print(output_a)
print(list(output_a))
output_b = filter(under_3, list_a)
print(output_b)
print(list(output_b))
여기서 print(output_a)와 print(output_b)는 출력하면 , 이렇게 실행이 되는데
print(list_a)의 경우 [1, 2, 3, 4, 5, 6]이렇게 출력이 되는지 알 수 있을까요?
질문 올려주신 글을 보고
어떤 답변을 원하시는지 살짝 이해하기가 힘든데,
넵 그렇게 출력이 됩니다!
@@윤인성
저도 질문하고, 진도를 계속 나가다가 뭐를 물어볼려고 했는지 기억이 안 납니다. ㅎㅎ
어차피 2회독 3회독까지 생각중이라 공부하다가 해결이 안 되면 다시 문의 드리겠습니다.
강의 항상 잘 보고 있고, 너무 감사합니다🙂
왜 2-4 와 4-2는 앉히는 순서가 다른 다른 방법인데 중복으로 하나를 제거하는지요,?
문제에서 "순서는 상관하지 않는다"라고 했으니까요!
@@윤인성 아네 감사합니다.~
선생님. 이번 강의 코드에서 range(max(블라블라),min(블라블라)+1) 부분에서, 노드를 계속 타고 가다보면 max()리턴값이 min()의 리턴값보다 커져 range(4,3)과 같은 꼴처럼 되는 단계들이 있는데 이 경우 에러를 띄우지 않고 그냥 실행이 안되는 채로 자동으로 continue되는 것인가요? 코드 분석하는데 그 부분이 걸리네요
파이썬 튜터로 돌려보니 for i in range(x,y)에서 x>y면 바로 함수 내부에서 None을 리턴하고 함수를 종료시키네요..
이것도 그냥 파이썬의 규칙인가요..?
아 조금 더 연구해보니
for i in range(4,3) :
print(i)
하니 아무 일도 일어나지 않았습니다.
그렇다면, 제 추측이 맞다면 아마도
재귀된 함수 안에서 반복문이 돌아가는데, 위와 같은 상황이 되면 반복문이 아무 일도 일어나지 않은 채 종료되고, 함수는 표현식으로 작성된 모든 일을 다 끝마쳤기 때문에 종료하게 되는데, 리턴값을 정해두지 않았기 때문에 None이 리턴된 것인가요?
어차피 우리의 목표는 함수의 리턴값이 중요한 게 아니라 함수 내부에서 조건문으로 count 변수에 카운팅하는 것이니 상관이 없는 것이고요?
range(4, 3)하면 4부터 3까지 1씩 증가하면서 반복되는데,
이게 불가능하므로 반복이 일어나지 않습니다.
역으로 돌리려면 range(4, 3, -1)을 해야 합니다.
PS. C, Java, C++, C# 등의 프로그래밍 언어를 해보시면 조금 더 정확하게 알 수 있는데
(1) i = 4로 놓고
(2) i < 3이 True일 동안
(3) i += 1하면서 반복
하게 되는데 i = 4라서 시작부터 (2)에서 False가 나와서,
범위 자체를 생성하지 못하고 반복도 못합니다.
@@윤인성 아 range(4,3,1)에 나열하신 로직이 내재되어 있던 것인가요? 그런 자세한 내용은 모르고 있었어요.
넵 그렇습니다! list(range(4, 3))을 해보시면 아무 것도 없는 리스트가 나오는 것을 확인하실 수 있습니다.
아이고 두야..