🏆 인프런 2024년 루키상, 2025년 수강생Pick상 수상
👨💻 인프런 수강평 우수 강사 · macOS 10년 경력 개발자 출신
안녕하세요. @weekendcode 라는 유튜브 채널을 운영하고 있습니다.
비전공자, 프로그래밍에 관심 있는 학생들을 위해 최대한 쉽게 설명하고자 노력하는 강사입니다.
컴퓨터 공학으로 대학교를 졸업하고, 인간-컴퓨터 상호작용 연구분야로 석사 학위를 받았습니다.
Java 언어로 안드로이드 개발자로서 일했고, Python 강사로 활동했습니다.
몇 번의 이직과 창업을 하는 과정에서 비전공자 분들께 지식을 공유할 기회가 생긴 이후,
본격적으로 지식공유자로 활동하고 있습니다.
모르는 것은 적극적으로 질문 부탁드립니다.
최선을 다해서 답변 드리겠습니다.
좋은 하루 보내세요.
강의
수강평
- (2026 최신!) 일주일만에 합격하는 정보처리기사 실기
- (2026 최신!) 일주일만에 합격하는 정보처리기사 실기
- (2026 최신!) 일주일만에 합격하는 정보처리기사 실기
- (2026 최신!) 일주일만에 합격하는 정보처리기사 실기
게시글
질문&답변
자식 기본 생성자 출력 조건
2가지만 기억하시면 됩니다.어떤 자식 객체가 태어나려면 일단 어떤 형태든 간에 부모의 생성자는 최소 1번은 호출되어야 합니다.자식 객체는 불리는 생성자가 최초로 호출되고, 그 이후로는 호출 체인(this()나 super())를 따라가시면 됩니다.지금은 3개짜리 생성자를 불렀습니다. new 뒤가 어떤 생성자를 찾을지 결정하는 겁니다.자식은 생성자가 2개입니다. 클래스와 이름이 같은 메서드가 생성자니까요.파라미터 0개짜리 기본과 3개짜리죠.지금은 3개짜리로 객체를 생성했습니다. 그 생성자 안에 this()가 없죠? 그러면 거기서 끝입니다.자식 생성자에는 기본적으로 super()가 들어가있으나, 다른 super를 부르면 그걸 따라가야 합니다.지금은 super(model, year)가 있네요. 그럼 부모의 2개짜리 생성자로 갑니다.실제 출력은 역순으로 됩니다.그게 끝입니다. 더 이상의 개념은 없습니다.
- 좋아요수
- 0
- 댓글수
- 2
- 조회수
- 13
질문&답변
부모 및 자식 기본생성자 호출
안녕하세요,6:19 코드에서는 new ElectricCar() — 인자 없이 생성했습니다. 그래서 실행된 자식 생성자는 기본 생성자 ElectricCar() 입니다.그 첫 줄에 자동 super()가 삽입되어 부모 기본 생성자 Car()가 먼저 실행되고(→ "Car constructor"), 그다음 자식 기본 생성자 본문이 실행됩니다(→ "ElectricCar constructor"). 그래서 둘 다 출력됩니다.10:23 코드에서는 new ElectricCar("Tesla", 2021, 75) — 인자 3개로 생성했습니다. 그래서 실행된 자식 생성자는 기본 생성자가 아니라 매개변수 생성자 ElectricCar(String, int, int) 입니다. 여기서도 자동 super()가 삽입되어 부모 기본 생성자 Car()는 출력되지만(→ "Car()"), 자식의 기본 생성자 ElectricCar()는 애초에 호출된 적이 없어서 출력되지 않았습니다.메인함수에서 어떤 생성자를 불렀는지 보셔야 합니다. 매개변수가 없는 기본생성자가 아닌 매개변수 3개짜리를 불렀기 때문에 호출이 안되는 것입니다. 만약에 3개짜리 생성자에서 this()를 통해 스스로의 기본 생성자를 불렀다면 출력했을 겁니다.
- 좋아요수
- 0
- 댓글수
- 2
- 조회수
- 16
질문&답변
(기출) 2023년 3회 코드해석 문제의 1:10입니다.
안녕하세요.만약에 업캐스팅이 아니라, 부모의 코드만 있다고 가정하고 질문해주시는 것이 맞을까요?아래와 같은 코드라면 실제로 무한 호출이 일어납니다.A a = new A(); // 실제 객체가 A a.draw(); // A.draw() → this.draw() → this는 A → A.draw() → ... 무한 재귀!A.draw()안에서 계속 draw()를 호출하면, 무한 재귀가 발생하게 되고 오류가 발생합니다.업캐스팅이 아닐 때는 무한 호출이 일어나는 것이 맞습니다.
- 좋아요수
- 0
- 댓글수
- 2
- 조회수
- 7
질문&답변
23년도 2회 c언어 0:03 n[(i+6)%5] 도 가능한건가요?
안녕하세요, 답 자체는 맞습니다만제가 복원 문제를 만들면서 들었던 것은 작성할 수 있는 숫자와 기호가 보기로 주어졌다고 합니다.실제 문제는 작성할 수 있는 식 중에 가장 짧은 식만 답변이 인정된다고 했으므로,아마 6이 주어지지 않았을 것 같지만 숫자에 대한 제한이 없었다면 정답으로 처리될 것으로 예상합니다.
- 좋아요수
- 0
- 댓글수
- 2
- 조회수
- 7
질문&답변
6강 17:50
안녕하세요!결론부터 말씀드리면, 그 구분은 scanf(입력)에서는 맞지만,printf(출력)에서는 사실 구분이 없어요.1. printf(출력)에서는 %f, %lf 둘 다 똑같이 동작해요float이든 double이든 %f로 다 출력됩니다이유: printf에 실수를 넘길 때 float은 자동으로 double로 승격 형변환되기 때문이에요그래서 이 코드에서 %.5lf를 %.5f로 바꿔도 결과가 똑같아요2. 진짜 구분이 필요한 건 scanf(입력)예요float 변수에 입력받을 때 → %fdouble 변수에 입력받을 때 → %lf여기서 l을 빠뜨리면 값이 이상하게 들어가서, 이때는 반드시 지켜야 합니다.정리하면이해하신 "float은 f, double은 lf"는 → scanf 기준으로는 정확한 규칙이에요printf에서는 %f만 써도 float·double 모두 문제없이 출력됩니다실제 시험에서는?시험 문제는 대부분 출력(printf) 결과를 묻는 유형이라, %.2f, %.5lf가 나오면 소수점 자릿수(.2, .5)에만 집중하시면 돼요자릿수만큼 반올림해서 출력된다는 점만 기억하시면 충분합니다
- 좋아요수
- 0
- 댓글수
- 2
- 조회수
- 21
질문&답변
08:30 이중포인터 질문
안녕하세요! 헷갈리기 쉬운 부분인데 아주 좋은 질문이에요.이 코드 기준으로 하나씩 짚어드릴게요1. 별표(*) 개수는 "몇 단계를 건너야 실제 값이 나오는가"를 뜻해요str → 실제 문자들이 담긴 배열ptr_a → str의 주소를 담음 (1단계) → 그래서 char *ptr_b → ptr_a의 주소를 담음 (2단계) → 그래서 char **즉 &ptr_a의 타입 자체가 char **예요.담는 그릇(ptr_b)도 똑같이 char **여야 타입이 맞습니다.별표를 하나만 쓰면 단계가 안 맞아서 오류가 나요.2. char *ptr_b = ptr_a;는 오류는 아니지만, 의미가 완전히 달라져요이렇게 쓰면 → ptr_b가 ptr_a와 똑같이 str을 가리킴원하시는 것 → ptr_b가 ptr_a를 가리킴 (char **ptr_b = &ptr_a;)앞의 방식으로 쓰면 아래 *ptr_b = str2; 같은 이중 포인터 동작을 할 수 없어요."ptr_a의 주소를 저장"하려면 반드시 **와 &를 함께 써야 합니다.3. ptr_a 앞에 &를 쓰는 건 전혀 문제없어요배열은 str이고, ptr_a는 엄연한 포인터 **"변수"**예요변수는 자기만의 주소를 가지므로 &ptr_a도 당연히 가능하고그 결과가 바로 char ** 타입입니다한 줄 요약& → "그 변수가 저장된 주소를 달라"* 개수 → "그 주소가 몇 단계짜리 포인터인지"이 둘을 짝지어 생각하시면 훨씬 덜 헷갈리실 거예요. 화이팅입니다! :)
- 좋아요수
- 0
- 댓글수
- 1
- 조회수
- 22
질문&답변
정처기 질문
안녕하세요! 강의 잘 들어주셔서 감사하고, 이렇게 고민 남겨주셔서 반갑습니다.결론부터 말씀드리면, 지금 시점에서 응시 여부를 판단하는 가장 정확한 방법은 기출문제를 직접 풀어보는 것입니다.강의를 한 번 듣고 "이해된 것 같다"와 "실제로 풀 수 있다"는 생각보다 큰 차이가 있어요. 특히 정처기 실기는 눈으로 이해하는 것과 손으로 답을 써내는 것이 완전히 다른 영역이라, 지금 느끼시는 "짧은 코드는 되는데 길어지면 막힌다"는 감각도 결국 문제를 많이 풀어봐야 좁혀집니다.그래서 제안드리자면, 고민만 하지 마시고 최근 3~5회차 기출을 실제 시험처럼 시간 재고 풀어보세요.그 결과가 지금 가장 냉정한 답을 줄 겁니다.채점해보니 50점 근처 이상이 나온다면 남은 기간 약점만 집중 보완하면 충분히 승산이 있습니다. 이번에 응시하시는 걸 추천드려요.점수가 많이 낮게 나오더라도 그 경험 자체가 손해가 아닙니다. 어떤 유형(프로그래밍/SQL/이론 등)에서 막히는지, 내가 뭘 모르는지가 명확해지거든요. 이번엔 "실전 연습" 삼아 응시하고 다음 회차를 본선으로 잡아도 좋습니다.비전공 노베이스여도 정처기 실기는 기출이 반복되는 비중이 높은 시험이라, 남은 기간에 새 개념을 완벽히 채우려 하기보다 기출 유형을 반복해서 손에 익히는 쪽이 훨씬 효율적입니다.특히 긴 코드가 어렵다면, 처음부터 완벽히 이해하려 하지 마시고 정답 코드를 한 줄씩 따라 쓰며 흐름을 익히는 방식으로 접근해보세요. 유형이 눈에 들어오기 시작하면 생각보다 빨리 뚫립니다.지금 느끼시는 답답함은 노베이스라면 누구나 거치는 지점이니 너무 조급해하지 않으셔도 됩니다.우선 기출 한 회차부터 풀어보시고, 그 점수를 기준으로 판단해보시길 바랍니다. 응원하겠습니다! 화이팅이에요 :)
- 좋아요수
- 0
- 댓글수
- 2
- 조회수
- 20
질문&답변
6강 11:37
안녕하세요!말씀하신 이해가 정확합니다. 정리해서 설명드릴게요.print는 출력할 값 뒤에 자동으로 end='\n'(줄바꿈)을 붙여줍니다.우리가 따로 end를 쓰지 않아도, 파이썬이 보이지 않게 넣어주는 것이죠.그래서 print를 여러 번 하면 값들이 한 줄씩 아래로 내려가며 출력됩니다.그런데 end에 다른 값을 직접 지정하면, 이 기본 줄바꿈이 지정한 값으로 대체됩니다.줄바꿈이 사라지니 다음 출력이 옆에 이어서 붙는 것이고요.예를 들어,print("안녕") print("하세요")는 각 print 뒤에 줄바꿈이 붙으므로안녕 하세요로 나옵니다.반면,print("안녕", end="1") print("하세요")는 첫 줄의 줄바꿈이 "1"로 바뀌므로안녕1하세요로 출력됩니다.(end=""처럼 빈 문자열을 넣으면 줄바꿈 없이 바로 옆에 붙어서, 이미지 속 3131처럼 나오는 것이고요.)print 문법은 여기까지가 핵심입니다. 기출에서도 출력 형태를 묻는 문제로 종종 나오는 부분이니, 이 원리를 알아두시면 실전에서 헷갈리지 않으실 거예요. 화이팅입니다!
- 좋아요수
- 0
- 댓글수
- 2
- 조회수
- 22
질문&답변
6강 5:15
안녕하세요, 언어별 타입이나 형태는 뒤에서 언어별 수업에서 더 자세하게 가르쳐드립니다.질문을 주셔서 나눠보긴 했지만 모든 언어의 스펙을 다 외울 필요는 없습니다.대략적으로 데이터가 어떻게 담기는 지 정도 개념을 가지라는 수준에서 말씀드리는 챕터이기 때문에지금 챕터에서 모든 타입을 확인하실 필요는 없습니다.(사진)말씀 주신 언어별 지원 키워드에 대해서는 위 도표를 참고해주세요.
- 좋아요수
- 0
- 댓글수
- 1
- 조회수
- 29
질문&답변
5강 5:45
파이썬에서만 input이 문자열 형태로 리턴됩니다.나머지 언어에서는 직접 입력 받을 데이터의 형태를 정할 수 있습니다.함수의 동작이 약간 다릅니다.아래 인프런 AI 인턴 답변만 보셔도 됩니다.그동안 실기 시험에서 입력 자체에 대한 문제는 거의 나오지 않았습니다.
- 좋아요수
- 0
- 댓글수
- 2
- 조회수
- 20




