소개
안녕하세요. @weekendcode 라는 유튜브 채널을 운영하고 있습니다.
비전공자, 코딩에 관심 있는 학생들을 위해 최대한 쉽게 설명하고자 노력하는 강사입니다.
강의
전체1수강평
- 합격했습니다!
zzing199842
2024.09.13
0
게시글
질문&답변
2024.09.19
업캐스팅 5분 22초
안녕하세요, 낮에 언뜻 질문을 봤을 때와 약간 다르게 질문 내용이 수정되어 있네요. 에러가 발생하지 않았다는 것을 가정해서 질문을 주셨으니, chargeBattery() 없다고 친다면 말씀 주신 것이 맞습니다. 부모 기본생성자: 자동차 객체 생성됨 자식 기본생성자: 전기 자동차 객체 생성됨 재정의되지 않은 메서드 출력: 엔진 시동 걸림 이렇게 됩니다. 4번은 오류니까 제외했습니다. 업캐스팅일 때는 static 주의하세요. 커리큘럼에서 꼭 hiding 학습 부탁드립니다.
- 0
- 2
- 35
질문&답변
2024.09.19
6분 37초 영상 질문있습니다.
먼저, 클래스 메서드(정적 메서드)를 먼저 이해해야 합니다. 클래스 메서드는 클래스(객체 아님)를 선언한 상태면 그 즉시 사용 가능합니다. 그러니까, new 생성자() 없어도 이미 세상에 존재하긴 한다는 것입니다. 우리가 현실(main 함수)로 끌고 오지는 않았지만, 동작은 가능합니다. 지금은 Connection이라는 클래스명에서 .(점)을 찍어서 getInstance()라는 클래스 메서드(정적 메서드)를 실행했습니다. 이것을 따라가보니 inst라는 정적 변수가 null인지를 묻습니다. inst 정적 변수는 모든 객체(클래스 아님)가 공유하는 공유 공간입니다. 이 곳에서 최초로 태어나는 것이기 때문에 null입니다. 그 상태에서 new Connection()이라고 거기에서 객체를 생성합니다. (현실에서 탄생시킴) 그 객체를 돌려줍니다. (여기서 돌려받는 곳은? 최초에 conn1이라는 변수에 들어갑니다.) 그럼, conn1에는 Connection을 기반으로 만들어진 객체가 최초로 생성된 것입니다. 근데 문제는 정확히 말하자면, "공용 공간에 있는 _inst라는 변수에 객체가 들어가있는 상태" 입니다. _inst를 사과라고 가정해봅시다. 지금 생성자는 private라서 다른 클래스(Main)에서 접근할 수 없습니다. 오직 정적 메서드만 사용가능하죠. 우리 모두가 접근 가능한 방에 사과를 하나 놓았고, 그 사과를 놓은 방을 리턴 받았습니다. (결국 사과이긴 합니다.) 그 아래 conn2, conn3에 가도 getInstance()의 if문에 걸리지 않습니다. 그래서 계속 이전에 생성되었던 공용 공간의 사과를 리턴받습니다. 이해에 도움이 되셨을까요?
- 0
- 2
- 33
질문&답변
2024.09.19
merge 함수 자세한 동작 방법
안녕하세요, yys125님의 질문의 의도가 정확하게 제게 전달되었는지는 모르겠습니다만, 우선 merge 함수의 동작 자체는 옳게 이해하셨습니다. 최초에 arr[0], arr[1]만 merge 함수에 들어오면 말씀하신 대로 동작합니다. 각각 복사되고, 작은 것부터 앞에서 부터 꽂힙니다. 문제는 "뒤에 알아서 배열이 붙나요?"인데요, 이 부분은 mergeSort에서 재귀적으로 다시 mergeSort를 부른다는 것을 해석 못하신 것 같습니다. 지금 mergeSort는 전부 다 일일이 쪼개기 어려운 순간까지 배열을 잘게 나눕니다. 그 과정이 재귀적으로 되는 것입니다. mergeSort(arr, l, m); mergeSort(arr, m+1, r); merge(arr, l, m, r); 이 부분을 보면, 위의 2줄의 코드를 통해 m까지, m+1부터로 쪼개는 것을 알 수 있습니다. 그리고 그것이 모두 각각 리턴 받아서 합쳐진 것들을 합치는 것입니다. 이게 글로는 설명하기 어려워서 결국 하나씩 해보셔야 하는건데요, [ 28, 9, 1, 10] 이 부분도 모두 나뉘어서 각각의 merge를 수행해서 돌아오게 됩니다. 일단, 값을 계산하려고 하지 마세요. "쪼개는 것만 먼저"해보시길 권장드립니다. 올려주신 이미지처럼 줄로 긋되, 아래 내용을 쓰지 마세요. mergeSort(arr, 0, 5)가 들어갔습니다. 이것을 계속 쪼개서 선만 만드세요. 그리고 그것에 대한 리턴은 "본인을 부른 함수로 전달해줘야 합니다." 그게 재귀함수의 정의입니다. 예를 들면, mergeSort(arr, l, m)에서 최초 값을 불렀으면, 그 첫줄로 돌아가야 합니다. 지금 올려주신 이미지 상으로는 옆에 있는 것과 바로 merge하려고 하니 헷갈리시는 것 같습니다. 처음부터 모든 배열을 쪼개서 생각해야 합니다. 제 해설은 다시 글로 드려도 본 영상 9:15 시작만큼 해설해드리기가 어렵습니다. 왼쪽 부분, 오른쪽 부분을 나눠가면서 다시 작성한 것을 이미지로 대댓글 올려주시면 그 상태에서 다시 답변드리도록 하겠습니다!
- 0
- 3
- 20
질문&답변
2024.09.18
주피터노트북 오류
질문을 다른 강좌에 잘못 올리신 것일까요? Jupyter Notebook 사용법에 대해서는 알려드리기가 어렵습니다. 정보처리기사 관련된 질문을 부탁드립니다.
- 0
- 2
- 19
질문&답변
2024.09.17
5분55초 내용 질문있어요
답변 1: struct Car myCar는 Car라는 구조체 형태의 myCar라는 변수를 만든 것입니다. 단순한 구조체 변수 선언입니다. 특별한 의미는 없습니다. 답변 2: C언어는 String 형태가 없습니다. 그저 문자를 배열 형태로 엮어 놓은 것을 문자열이라고 부르긴 합니다만... 엄밀히 말하면 문자열 형태는 아니고 "문자가 여러 개 연속된 메모리에 나열된 상태"입니다. (기타) strcpy는 #include 이 헤더파일을 가져와야지만 가능한 표준 라이브러리입니다. C언어를 설치하면 제공되는 함수라고 생각하시면 됩니다. printf도 stdio.h를 가져와야 하는 것처럼요.
- 0
- 2
- 18