🏆 인프런 2024년 루키상, 2025년 수강생Pick상 수상
👨💻 인프런 수강평 우수 강사 · macOS 10년 경력 개발자 출신
안녕하세요. @weekendcode 라는 유튜브 채널을 운영하고 있습니다.
비전공자, 프로그래밍에 관심 있는 학생들을 위해 최대한 쉽게 설명하고자 노력하는 강사입니다.
컴퓨터 공학으로 대학교를 졸업하고, 인간-컴퓨터 상호작용 연구분야로 석사 학위를 받았습니다.
Java 언어로 안드로이드 개발자로서 일했고, Python 강사로 활동했습니다.
몇 번의 이직과 창업을 하는 과정에서 비전공자 분들께 지식을 공유할 기회가 생긴 이후,
본격적으로 지식공유자로 활동하고 있습니다.
모르는 것은 적극적으로 질문 부탁드립니다.
최선을 다해서 답변 드리겠습니다.
좋은 하루 보내세요.
강의
수강평
- (2026 최신!) 일주일만에 합격하는 정보처리기사 실기
- (2026 최신!) 일주일만에 합격하는 정보처리기사 실기
게시글
질문&답변
6분46초
확인 감사합니다! 메모해두고 추후에 영상 수정하면서 바꿔놓도록 하겠습니다.
- 좋아요수
- 0
- 댓글수
- 2
- 조회수
- 36
질문&답변
모의고사 파일과 이론파일 업데이트
안녕하세요, 제가 방금 모의고사 파일을 전부 받아봤습니다.압축파일로 정상적으로 다운로드가 됩니다.혹시 확장자가 비어있는 경우 .zip으로 변경 부탁드립니다.(사진)
- 좋아요수
- 1
- 댓글수
- 2
- 조회수
- 63
질문&답변
13분 40초
안녕하세요. 이 부분 많이 헷갈려하시는데, 질문을 보니 거의 다 이해하셨고 딱 한 군데만 잡으면 됩니다.처음에 이해하신 "ptr_a에 'W'의 주소가 저장된다"는 맞습니다. 헷갈린 곳은 뒤에 쓰신 "*ptr_b의 값인 30000"입니다. 30000은 ptr_b의 값이고, *ptr_b의 값은 30000번지에 들어 있는 내용(1001)입니다. 이 차이 때문에 뒤쪽 이해가 꼬인 겁니다.주소를 임의로 정해서 같이 따라가 보겠습니다.str : 주소 1001~1006, 저장된 값 "Hello\0"str2 : 주소 2001~2006, 저장된 값 "World\0"ptr_a : 주소 30000, 저장된 값 1001ptr_b : 주소 40000, 저장된 값 300001. *를 몇 개 붙였는지부터 보세요.ptr_b // 40000번지에 든 값 = 30000 (타입: char**) *ptr_b // 30000번지로 가서 본 값 = 1001 (타입: char*, 곧 ptr_a 자체) **ptr_b // 1001번지로 가서 본 값 = 'H' (타입: char, 곧 str[0])*를 하나 붙일 때마다 "저장된 주소로 한 번 찾아간다"고 기억하시면 됩니다. 그래서 *ptr_b는 숫자 30000이 아니라, 30000번지에 있는 변수 ptr_a 자체를 뜻합니다. 시험에서는 *ptr_b가 나오면 바로 ptr_a로 바꿔 읽으시면 편합니다.2. *ptr_b = str2;는 ptr_a = str2;와 같습니다.대입문 왼쪽에 *ptr_b가 있으면 "30000번지에 값을 써라"라는 뜻입니다. 오른쪽 str2는 배열 이름이니까 첫 원소 주소인 2001이 됩니다.ptr_a : 주소 30000, 저장된 값 1001 → 2001ptr_b : 주소 40000, 저장된 값 30000 (그대로)ptr_b의 값 30000 자체를 바꾸려면 * 없이 ptr_b = ...로 써야 합니다. *를 붙였으니 ptr_b 본인이 아니라 ptr_b가 가리키는 ptr_a가 바뀐 겁니다.그리고 하나 더 말씀드리면, 'H'가 'W'로 바뀐 것은 아닙니다. str은 여전히 "Hello" 그대로이고, 바뀐 건 ptr_a에 들어 있던 주소(1001 → 2001)입니다. ptr_a가 다른 문자열을 가리키게 된 것뿐입니다.3. 그래서 ptr_a[1]은 'o'입니다.ptr_a[1]은 *(ptr_a + 1)과 같습니다. 2001 + 1 = 2002번지 문자를 읽으니까 "World"의 두 번째 글자 'o'가 출력됩니다.4. ptr_b = str2;와 **ptr_b = str2;가 에러인 이유둘 다 양쪽 타입이 안 맞아서 그렇습니다. str2는 char*, 즉 문자의 주소입니다.ptr_b = str2; // char** 자리에 char* → 타입 불일치 *ptr_b = str2; // char* 자리에 char* → 일치, 정상 **ptr_b = str2; // char 자리에 char* → 타입 불일치ptr_b = str2;는 "포인터의 주소"를 담아야 하는 변수에 "문자의 주소"를 넣은 겁니다.억지로 넣으면 ptr_b가 'W'가 있는 곳을 포인터 변수로 착각하고 읽게 됩니다.**ptr_b = str2;는 문자 한 칸('H' 자리, 1바이트)에 주소값을 넣으려는 겁니다. 문자 칸에 주소는 들어갈 수 없으니 에러가 납니다.참고로 C에서는 컴파일러 버전에 따라 이 두 줄이 경고로만 뜨는 경우도 있고, 최근 GCC(14 이상)나 C++에서는 에러로 처리됩니다. 어느 쪽이든 잘못된 코드라고 보시면 됩니다.실기에서는 이중 포인터 문제가 나오면 위처럼 주소표를 직접 그려놓고 * 하나에 한 칸씩 따라가시면 실수가 확 줄어듭니다. 또 막히는 부분 있으면 편하게 질문 남겨주세요.
- 좋아요수
- 0
- 댓글수
- 2
- 조회수
- 51
질문&답변
이론 pdf 다운은 어디서 하나요?
안녕하세요! 섹션 11의 가장 첫 챕터에 들어가시면 다운로드 가능합니다.
- 좋아요수
- 0
- 댓글수
- 2
- 조회수
- 55
질문&답변
정보처리기사 26년 실기 2회 네트워크 부분
안녕하세요, 별도로 "기출문제 해설강의"로 추가하기보다서브넷 마스크만 따로 모아서 업데이트할 예정입니다.출제 대비 알아야 할 부분이 많아서 이론은 텍스트 형태로 올릴 수도 있고,해설 영상만 하나로 올릴 수도 있습니다. 현재 학습자료 구성 중이라서 10월 중에 올라가지 않을까 싶습니다.IP 대역과 서브넷 마스크를 잘 모르셔도 충분히 시험에 합격하실 수 있고, 주변에 수강생들 보면 열심히 서브넷 마스크 외워서 갔다가 하나도 안나오거나 계산 잘못해서 틀리는 경우도 많았습니다.우선 다른 부분을 좀 더 암기하시고, 코드 이해에 집중하시는 것이 합격하는 데에 좀 더 큰 도움이 되실 것이라 생각합니다.업데이트가 되면 새소식으로 업로드하겠습니다!
- 좋아요수
- 0
- 댓글수
- 2
- 조회수
- 60
질문&답변
모의고사1회 2번문제 뭔지 모르겠네요 강의올려주시면안될까요?
안녕하세요! 모의고사의 경우 별도의 해설 영상은 촬영 예정이 없으며, 질문을 올려주시면 답변을 드리는 형태로 설명드리고 있습니다. 우선 이 문제의 출력 결과는 GB1:B1입니다. GiftBox 객체를 만들면 자식 클래스보다 부모 클래스인 Box가 먼저 초기화됩니다. 그래서 Box의 name은 처음 "B"로 초기화되고, 이어서 Box() 생성자의 name += "1"이 실행되면서 "B1"이 됩니다.그다음에는 GiftBox에 있는 name이 "G"로 초기화됩니다. 여기서 조금 헷갈릴 수 있는데요. GiftBox의 name이 부모 클래스의 name을 덮어쓰는 것은 아닙니다. Box.name과 GiftBox.name은 각각 별개의 필드로 존재합니다. 따라서 이 시점에서는 부모의 name은 "B1", 자식의 name은 "G"인 상태라고 생각하시면 됩니다.이후 GiftBox() 생성자 안의 name += super.get()이 실행됩니다. 여기서 앞의 name은 GiftBox의 name을 의미하고, super.get()은 부모 클래스인 Box의 get()을 호출합니다. 부모의 get()은 현재 "B1"인 Box.name을 반환하기 때문에 "G" + "B1"이 되고, 결과적으로 GiftBox.name은 "GB1"이 됩니다.마지막으로 g.get()을 호출하면 GiftBox에서 오버라이딩한 get() 메서드가 실행됩니다. 여기서 name은 GiftBox.name인 "GB1"이고, super.get()을 호출하면 부모의 Box.name인 "B1"을 가져옵니다. 따라서 최종적으로 "GB1" + ":" + "B1"이 되어 GB1:B1이 출력됩니다. 이 문제에서는 부모와 자식에 같은 이름의 필드가 있더라도 각각 별도로 존재한다는 점, 그리고 super를 사용하면 부모 클래스의 멤버에 접근할 수 있다는 점을 기억해주시면 좋습니다.GiftBox 객체 ┌──────────────────────────┐ │ │ │ Box 영역 │ │ └─ name = "B1" │ │ │ │ GiftBox 영역 │ │ └─ name = "GB1" │ │ │ └──────────────────────────┘ g.get() │ ├─ name → GiftBox.name → "GB1" │ └─ super.get() → Box.name → "B1" │ ▼ "GB1:B1"
- 좋아요수
- 0
- 댓글수
- 1
- 조회수
- 44
질문&답변
26년2회 실기기출은 언제쯤...
안녕하세요, 촬영은 끝났고 코드와 이론별로 영상 편집 중에 있습니다. 2회 합격자 발표 전에는 업로드 예정입니다.참고로 26년 2회 실기 합격자 발표는 9월 11일 예정입니다.
- 좋아요수
- 0
- 댓글수
- 2
- 조회수
- 120
질문&답변
이론 공부법 요약본 버전 업데이트 문의
안녕하세요, 26년 2회차 해설 영상을 업로드하면서 함께 통합본으로 올릴 예정입니다. 좀 더 핵심적인 내용만 제공해드리려고, 자주 출제되지 않는 부분을 줄이고 있습니다. 곧 업로드하도록 하겠습니다.
- 좋아요수
- 0
- 댓글수
- 2
- 조회수
- 92
질문&답변
정처기 필기 준비할때 이 이론을 다시 외워도 될까요?
안녕하세요! 지금 버전의 이론 자료로 들으셔도 충분합니다!시험 범위가 바뀐 것은 없으니 안심하세요.
- 좋아요수
- 0
- 댓글수
- 2
- 조회수
- 107
질문&답변
조건 반복문 질문: for 문 ?
for 문이 어떻게 흘러가는지 한 단계씩 풀어서 설명하겠습니다.int c = 0; for(i = 1; i > 3; i++) { c++; } printf("c=%d", c); 1단계 — 초기화반복문에 들어가기 전에 c = 0으로 시작합니다. 그리고 for 문이 처음 실행되면서 초기화 부분인 i = 1이 딱 한 번 실행됩니다. 이제 i는 1입니다.2단계 — 조건 검사초기화 다음에는 곧바로 조건을 검사합니다. 조건은 i > 3이고, 지금 i가 1이므로 1 > 3인지를 따집니다. 1은 3보다 크지 않으므로 이 조건은 거짓(false)입니다.3단계 — 반복문 종료for 문의 규칙상 조건이 거짓이면 본문으로 들어가지 않고 바로 반복문을 빠져나옵니다. 즉 중괄호 안의 c++는 단 한 번도 실행되지 않습니다. 증감식 i++도 실행되지 않습니다. 본문을 실행해야 그다음에 증감으로 넘어가는데, 애초에 본문에 진입하지 못했기 때문입니다.4단계 — 출력c는 처음에 넣어둔 값 그대로 0입니다. 따라서 printf는 화면에 c=0을 출력합니다.정리하면, 초기값 i = 1이 조건 i > 3을 처음부터 만족하지 못해서 반복문이 아예 돌지 않았고, 그래서 c는 증가할 기회 없이 0으로 남은 것입니다.정답: c=0
- 좋아요수
- 0
- 댓글수
- 1
- 조회수
- 88




