weekendcode
@weekendcode
受講生
4,794
受講レビュー
580
講義評価
4.8
안녕하세요. @weekendcode 라는 유튜브 채널을 운영하고 있습니다.
비전공자, 프로그래밍에 관심 있는 학생들을 위해 최대한 쉽게 설명하고자 노력하는 강사입니다.
컴퓨터 공학으로 대학교를 졸업하고, 인간-컴퓨터 상호작용 연구분야로 석사 학위를 받았습니다.
Java 언어로 안드로이드 개발자로서 일했고, Python 강사로 활동했습니다.
몇 번의 이직과 창업을 하는 과정에서 비전공자 분들께 지식을 공유할 기회가 생긴 이후,
본격적으로 지식공유자로 활동하고 있습니다.
모르는 것은 적극적으로 질문 부탁드립니다.
최선을 다해서 답변 드리겠습니다.
좋은 하루 보내세요.
講義
受講レビュー
- (2026) 一週間で合格する情報処理技術者実技
- (2026) 一週間で合格する情報処理技術者実技
- (2026) 一週間で合格する情報処理技術者実技
- (2026) 一週間で合格する情報処理技術者実技
投稿
Q&A
수업자료 pdf 질문
안녕하세요, 말씀하신 대로 PDF가 없는 챕터도 있습니다.코드와 설명이 있는 부분은 모두 PDF가 있습니다.그렇지 않은 것은 시험에서 빈출은 아니어서 한 번 정도 읽어보고 넘어가시면 됩니다~
- 0
- 2
- 31
Q&A
9분 35초 질문
안녕하세요,# 10부터 -6까지 2씩 감소 for i in range(10, -7, -2): print(i)이렇게 작성하면 아래와 같이 나옵니다.1086420-2-4-6
- 0
- 2
- 17
Q&A
문자열 슬라이싱 한문제 기원!!!
시험 운이 잘 들어오셔서 좋은 결과 있으면 좋겠습니다.응원합니다!
- 0
- 2
- 20
Q&A
속도증가 관련 질문
안녕하세요,지금 생성을 인스턴스를 2개를 한 것입니다. 각각은 독립된 공간입니다.그래서 테슬라가 50킬로 된 것이고, 현대차가 30킬로가 된 것입니다.하나의 인스턴스에 누적되는 것이 아니라, 각각의 인스턴스는 독립적으로 올라가야합니다. 같은 클래스 내에서 파생되어서 공유되는 변수는 현재 코드 상에서는 totalCars밖에 없습니다.
- 0
- 2
- 28
Q&A
유튜브 주말코딩 채널보면서 오늘 인프런 정보처리기사 실기 강의 결제를 하여 섹션1을 들었습니다... ^^;; (이번 정처기 실기 4번째 도전중..)
안녕하세요,얼마나 나이가 있으신 지는 잘 모르겠습니다만제 주변에 30대 후반에 개발을 시작해서 40 초반에 신입으로 일하시는 분도 계십니다.도전 자체만으로도 멋있다고 생각이 드는데, 결과까지도 안겨드리면 좋겠네요. 우선 코드는 부전공하셨으니 C, Java는 문법을 알고 계시리라 생각합니다.하지만 Java는 실제 개발자까지 하지 않으셨다면 업캐스팅이나 기본 Java API까지는 잘 모르실 겁니다. 이런 것들은 어쩔 수 없이 자주 보셔야지 합격이 가능합니다.(저도 Java 언어의 구조나 API를 안드로이드 개발자하면서 익혔으니 단순히 학과 졸업했다고 해서 이해할 수 있다는 것은 무리라고 생각됩니다.) 컴퓨터 이론은 원래 잊어버리기도 하고, 학교에서도 잘 안 알려줍니다.저도 소프트웨어 공학 수업을 듣긴 했는데, 정보처리기사에서 나오는 것들 다시 처음부터 공부했던 기억이 나네요. 먼 미래에 기술사 자격증을 준비하지 않는 한 다시 처음부터 외우기는 영 쉽지 않다는 생각이 들었습니다. 저도 그렇고, 제 주변 분들도 그렇고 이론은 그냥 계속 보고 익숙해지는 것밖에 없다는 생각입니다.안보면 잊어버리는 것이 당연하죠. 제가 영상 앞부분인가에서 말씀드렸는지 모르겠는데,제 주변에 컴퓨터공학과에서 과탑하는 친구들은 지금 네이버, 토스, 카카오에서 일하고 있지만 저보다 C언어를 잘 모릅니다.그도 그럴 것이 저는 오늘도 C언어를 보고 있으니까요. 자주 보고 익숙해지시면 저보다도 훨씬 더 잘하시게 되리라 믿습니다. 응원하겠습니다. 모르는 것이 있으면 질문 올려주세요.팁을 하나 드리자면 질문하시기 전에 온라인에서 각 언어의 컴파일러로 직접 실행해보시고 질문 올리시는 것을 권장드립니다. C: https://www.programiz.com/c-programming/online-compiler/Java : https://www.programiz.com/java-programming/online-compiler/Python : https://www.programiz.com/python-programming/online-compiler/
- 0
- 2
- 46
Q&A
번외 질문
안녕하세요, 가현님!주신 문장으로만은 질문이 조금 이해가 어렵습니다. 그래서 다시 질문드립니다. int a[3][2]={{1,2}, {3,4}, {5,6}} int *p=a[1]; 라고 되어있고 printf를 할 때 *a와 **a의 차이가 있을까요?여기서 printf에 들어가는 변수 부분 안에 *a, **a 가 들어가면 어떻게 되는지를 물어보시는 걸까요? 제 영상 중 어느 부분에서 질문이 생겼는지도 함께 주시면 답변에 큰 도움이 됩니다.
- 0
- 2
- 27
Q&A
아 진짜 구조체 이해 안되는데요
안녕하세요, 많이 어려우시죠.아예 코드를 처음 배우시는 분들이라면 C언어 자체가 어려울 수 있습니다.컴퓨터공학과 1학년 때 C언어를 6개월 간 배웠던 저도 그랬고요.옆에서 붙어서 과외처럼 가르쳐주지 않는 한, 원래 어려운 것이 맞습니다. 우선 문법은 둘째치고,개념 자체가 어려우신 것 같습니다.첫번째는 포인터 개념이고 두번째는 "함수를 호출한다"라는 개념입니다.8:14에 나온 코드 기준으로 좀 더 구체적으로 설명해볼게요.#include #include // 구조체 정의 struct Bag { char brand[50]; // 브랜드명을 저장할 문자열 배열 int year; // 제작 연도를 저장할 정수형 변수 float price; // 가격을 저장할 실수형 변수 }; // 구조체 포인터를 인수로 받아서 출력하는 함수 정의 void printBag(struct Bag * bag) { printf("Brand: %s\n", bag -> brand); printf("Year: %d\n", bag -> year); printf("Price: %.2f\n", bag -> price); } int main() { struct Bag myBag; // 구조체 변수 선언 struct Bag * bagPtr = & myBag; // 구조체 포인터 선언 및 초기화 // 포인터를 통해 값 할당 strcpy(bagPtr -> brand, "Gucci"); bagPtr -> year = 2021; bagPtr -> price = 1500.50; printBag(bagPtr); // 구조체 포인터를 사용하여 함수 호출 return 0; }
- 0
- 3
- 48
Q&A
6분 40초 질문
안녕하세요, 질문 많이 하셔도 괜찮습니다.다만 제가 바로바로 답변할 수 있을 지가 걱정이네요. 핵심: A b는 class B로 "되는" 게 아닙니다.A b = new B();를 풀어서 설명하면:A b = new B(); //↑ ↑ ↑ ↑ //│ │ │ └─ B 클래스의 기본 생성자 호출 //│ │ └───── 새로운 객체 생성 //│ └───────── 변수명 (소문자 b) //└─────────── 변수의 타입 (클래스 A) 1. 대소문자 구분A, B (대문자) = 클래스 이름b (소문자) = 변수 이름Java는 대소문자를 엄격히 구분합니다. b와 B는 완전히 다른 것입니다. A b = new B(); 이 문장은 아래와 같이 이해해야합니다.실제 생성되는 객체: B 타입 (자식)변수 b의 타입: A 타입 (부모)의미: "B 객체를 만들었지만, A 타입 변수로 참조하겠다" 2. 왜 이렇게 쓸까요?// 예시 class Animal { // 부모 void sound() { System.out.println("..."); } } class Dog extends Animal { // 자식 void sound() { System.out.println("멍멍"); } } class Cat extends Animal { // 자식 void sound() { System.out.println("야옹"); } } // 사용 Animal pet1 = new Dog(); // Dog 객체를 Animal 타입으로 Animal pet2 = new Cat(); // Cat 객체를 Animal 타입으로 pet1.sound(); // "멍멍" 출력 (실제는 Dog) pet2.sound(); // "야옹" 출력 (실제는 Cat)이렇게 하면 다양한 자식 객체들을 부모 타입 하나로 관리할 수 있습니다. 3. 주의사항A b = new B(); b.메서드(); // A에 있는 메서드만 호출 가능 // B에만 있는 메서드는 호출 불가변수 타입이 A이므로, A에 정의된 메서드만 사용할 수 있습니다.(단, 오버라이딩된 메서드는 B의 구현이 실행됨)핵심 요약: A b = new B();는 "B 객체를 만들어서 A 타입 변수로 가리킨다"는 의미입니다.
- 0
- 2
- 32
Q&A
섹션 3. 17강. 23:00 질문 있습니다.
printf("입력된 문자열: %c\n", str)%c는 문자 그 자체를 출력하는 포맷이고, 주소가 오면 안됩니다.배열의 이름 그 자체는 배열의 시작 주소를 가집니다. str은 뜯어보면 메모리 주소라는 것이죠. 그래서 결론적으로는 오류가 발생합니다.그런 코드는 시험 문제에서 출제되지 않습니다.#include int main() { char str[] = "this is string"; printf("=== 1. %%s와 %%c의 차이 ===\n"); printf("%%s로 출력: %s\n", str); printf("%%c로 출력: %c\n", str); // ⚠️ 경고 발생! 이상한 문자 출력됨 printf("\n"); printf("=== 2. 올바른 %%c 사용법 ===\n"); printf("첫 번째 문자만 출력: %c\n", str[0]); // 't' 출력 printf("두 번째 문자만 출력: %c\n", str[1]); // 'h' 출력 printf("\n"); printf("=== 3. 메모리 주소 확인 ===\n"); printf("배열 이름(첫 번째 요소 주소): %p\n", str); printf("str[0]의 주소: %p\n", &str[0]); printf("str[1]의 주소: %p\n", &str[1]); printf("str[2]의 주소: %p\n", &str[2]); printf("str[3]의 주소: %p\n", &str[3]); printf("\n"); printf("=== 4. 각 문자 값과 주소 출력 ===\n"); for (int i = 0; str[i] != '\0'; i++) { printf("str[%d] = '%c', 주소: %p\n", i, str[i], &str[i]); } printf("\n"); printf("=== 5. 주소 차이 확인 ===\n"); printf("str[0]과 str[1]의 주소 차이: %ld 바이트\n", (long)(&str[1] - &str[0])); return 0; } 온라인 컴파일러 기준으로 아래 출력문이 나옵니다.메모리 주소는 환경에 따라 다르게 나오니까 무시하시고, 값만 보시면 됩니다.=== 1. %s와 %c의 차이 === %s로 출력: this is string %c로 출력: � === 2. 올바른 %c 사용법 === 첫 번째 문자만 출력: t 두 번째 문자만 출력: h === 3. 메모리 주소 확인 === 배열 이름(첫 번째 요소 주소): 0x7ffdca154b9d str[0]의 주소: 0x7ffdca154b9d str[1]의 주소: 0x7ffdca154b9e str[2]의 주소: 0x7ffdca154b9f str[3]의 주소: 0x7ffdca154ba0 === 4. 각 문자 값과 주소 출력 === str[0] = 't', 주소: 0x7ffdca154b9d str[1] = 'h', 주소: 0x7ffdca154b9e str[2] = 'i', 주소: 0x7ffdca154b9f str[3] = 's', 주소: 0x7ffdca154ba0 str[4] = ' ', 주소: 0x7ffdca154ba1 str[5] = 'i', 주소: 0x7ffdca154ba2 str[6] = 's', 주소: 0x7ffdca154ba3 str[7] = ' ', 주소: 0x7ffdca154ba4 str[8] = 's', 주소: 0x7ffdca154ba5 str[9] = 't', 주소: 0x7ffdca154ba6 str[10] = 'r', 주소: 0x7ffdca154ba7 str[11] = 'i', 주소: 0x7ffdca154ba8 str[12] = 'n', 주소: 0x7ffdca154ba9 str[13] = 'g', 주소: 0x7ffdca154baa === 5. 주소 차이 확인 === str[0]과 str[1]의 주소 차이: 1 바이트
- 0
- 2
- 23
Q&A
28강 케이스6. (6분대 질문)
질문이 조금 난해합니다.class Parent() ← 이렇게 기본 생성자를 호출하지는 않습니다.코드로 표현하기 어려우시면, 어디 부분에 어떻게 쓰고 싶은 지를 말로 풀어서 설명해주시면 좋습니다. 혹시 기존의 super()를 super("name")으로 쓴다고 해석하면 될까요?그러면 가능하긴 합니다. class Parent { private String name; // 매개변수가 있는 생성자만 정의 public Parent(String name) { this.name = name; System.out.println("테스트"); } } class Child extends Parent { public Child() { // 컴파일 에러 발생: 부모 클래스의 기본 생성자가 없기 때문에 super() 호출이 실패함 super("name"); // 자동으로 추가되는 부모 클래스 생성자 호출 코드. 여기서 오류발생 } } public class Main { public static void main(String[] args) { Child child = new Child(); // 컴파일 에러 발생 } }출력값: 테스트
- 0
- 2
- 27




