묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨(2026) 일주일만에 합격하는 정보처리기사 실기
부모의 생성자
안녕하세요 강의 내용 중 9:22분에 문제 중에this.batteryCapacity = batteryCapacity; 문장은 아무런 역할을 안 하나요?해당 줄이 무슨 역할을 하는지 궁금합니다..!
-
해결됨(2026) 일주일만에 합격하는 정보처리기사 실기
43분 질문입니다
43분에서 궁금한점이있습니다. seen배열을 할당할때 처음에 다음 comp로 넘겨줄땐 다른seen(초기에 비어있는seen)을 넘겨주는게 아닌가요? 영상으로 보면 하나의seen으로 모든comp를 다루는걸로 보이는데 seen은 독립적이지않은건가요?
-
해결됨(2026) 일주일만에 합격하는 정보처리기사 실기
4:35 포인터 질문입니다
배열이나 문자열은 선언할 때 부터 포인터 형식으로 선언되나요? 만약 a = "가나다" a가 가리키는 것은 "가"의 주소값이 되나요?
-
해결됨(2026) 일주일만에 합격하는 정보처리기사 실기
변수 오버라이딩
하이딩에 대해 이해가 가지 않아 업캐스팅과 오버라이딩까지 다시 개념을 정리하다가 헷갈려서 질문합니다. 메서드, static붙는변수나 메서드는 오버라이딩이 가능하고 static이 붙지 않는 변수는 오버라이딩이 불가능한가요?
-
해결됨(2026) 일주일만에 합격하는 정보처리기사 실기
예상문제
혹시 요번년도 예상문제 20선 한번만 난이도 상으로 만들어주실 수 있나요... 봤던 것ㅂ만 풀어서 그런지 체감을 할 수가 없네요
-
해결됨(2026) 일주일만에 합격하는 정보처리기사 실기
26분 자식 this() 3단 체인
역순 호출시 child5(int) 에 int 값 1을 넣어서 출력해야 하는거 아닌가 하고요이미 3번에서 1을 대입 하면 더이상 안쓰는건가요?볼땐 알겠는데 뒤돌아보면 다시 리셋 되네요~ㅠㅠ
-
해결됨(2026) 일주일만에 합격하는 정보처리기사 실기
31. 업캐스팅 (부모 형태, 자식 생성자)
제가 제대로 이해한 것이 맞는지 헷갈려서 질문 드려요 ㅠ 부모 자식 클래스 관계에서 super()라는 명시적 호출이 생략되어 있는 거고, 상속 관계에서는 무조건 자식 생성자 생성하기 전에 부모 생성자부터 생성하는 건 이해했습니다.근데 그럼 상속 관계에서 명시적 호출 super()이 아닌, this()라고 선언 해놓았을 경우, 부모 생성자를 생성하지 않고 자식 생성자만 생성하는 건가요? 너무 헷갈리네요 ..
-
해결됨(2026) 일주일만에 합격하는 정보처리기사 실기
return
5:25초 구간에서 계산까지는 모두 혼자 정상적으로 진행했는데 궁금한 점은 temparr를 리턴 할 때 왜 intarr로 반환하는 건가요?
-
미해결C 프로그래밍 - 입문부터 게임 개발까지
8-8 연장전 / 소스코드 공유해드려요. 참고하세요!
#include <stdio.h> #include <stdlib.h> #include <time.h> // 10마리의 서로 다른 동물(각 카드 2장씩) // 사용자로부터 2개의 입력값을 받아서 -> 같은 동물 찾으면 카드 뒤집기 // 모든 동물 쌍을 찾으면 게임 종료 // 총 실패 횟수 알려주기 int arrayAnimal[4][5]; // 카드 지도 (20장의 카드) int checkAnimal[4][5]; // 뒤집혔는지 여부 확인 char *strAnimal[10]; void initAnimalArray(); void initAnimalName(); void shuffleAnimal(); int getEmptyPosition(); int conv_pos_x(int x); int conv_pos_y(int y); void printfAnimals(); void printQuestion(); int foundAllAnimals(); void printAlign(const char *str, int totalWidth); int getVisibleWidth(const char *str); int main(void) { srand(time(NULL)); initAnimalArray(); initAnimalName(); shuffleAnimal(); int failCount = 0; // 실패 횟수 while (1) { int select1 = 0; // 사용자가 선택한 처음 수 int select2 = 0; // 사용자가 선택한 두번째 수 printfAnimals(); // 동물 위치 출력 printQuestion(); // 문제 출력 (카드 지도) printf("뒤집을 카드를 2개 고르세요 : "); scanf("%d %d", &select1, &select2); if (select1 == select2) // 같은 카드 선택 시 무효 continue; // 좌표에 해당하는 카드를 뒤집어 보고 같은지 안같은지 확인 // 정수 좌표를 (x, y)로 변환 int firstSelect_x = conv_pos_x(select1); int firstSelect_y = conv_pos_y(select1); int secondSelect_x = conv_pos_x(select2); int secondSelect_y = conv_pos_y(select2); // 같은 동물인 경우 if ((checkAnimal[firstSelect_x][firstSelect_y] == 0 && checkAnimal[secondSelect_x][secondSelect_y] == 0) && (arrayAnimal[firstSelect_x][firstSelect_y] == arrayAnimal[secondSelect_x][secondSelect_y])) { printf("\n\n빙고! : %s 발견 \n\n", strAnimal[arrayAnimal[firstSelect_x][firstSelect_y]]); checkAnimal[firstSelect_x][firstSelect_y] = 1; checkAnimal[secondSelect_x][secondSelect_y] = 1; } // 다른 동물인 경우 else { printf("\n\n 땡!! (틀렸거나, 이미 뒤집힌 카드입니다)\n"); printf("%d : %s\n", select1, strAnimal[arrayAnimal[firstSelect_x][firstSelect_y]]); printf("%d : %s\n", select1, strAnimal[arrayAnimal[secondSelect_x][secondSelect_y]]); printf("\n\n"); failCount++; } // 모든 동물을 찾았는지 여부, 1 : 참, 0 : 거짓 if (foundAllAnimals() == 1) { printf("\n\n 축하합니다 ! 모든 동물을 다 찾았네요 \n"); printf("지금까지 총 %d 번 실수했습니다\n", failCount); break; } } return 0; } void initAnimalArray() { for (int i = 0; i < 4; i++) { for (int j = 0; j < 5; j++) { arrayAnimal[i][j] = -1; } } } void initAnimalName() { strAnimal[0] = "원숭이"; strAnimal[1] = "하마"; strAnimal[2] = "강아지"; strAnimal[3] = "고양이"; strAnimal[4] = "돼지"; strAnimal[5] = "코끼리"; strAnimal[6] = "기린"; strAnimal[7] = "낙타"; strAnimal[8] = "타조"; strAnimal[9] = "호랑이"; } void shuffleAnimal() { // ☐ ☐ ☐ ☐ ☐ // ☐ ☐ ☐ ☐ ☐ // ☐ ☐ ☐ ☐ ☐ // ☐ ☐ ☐ ☐ ☐ for (int i = 0; i < 10; i++) { for (int j = 0; j < 2; j++) { int pos = getEmptyPosition(); int x = conv_pos_x(pos); int y = conv_pos_y(pos); arrayAnimal[x][y] = i; } } } // 좌표에서 빈 공간 찾기 int getEmptyPosition() { // ☐ ☐ ☐ ☐ ☐ 0 1 2 3 4 -> 0 0 0 0 0 // ☐ ☐ ☐ ☐ ☐ 5 6 7 8 9 -> 1 1 1 1 1 // ☐ ☐ ☐ ☐ ☐ 10 11 12 13 14 -> 2 2 2 2 2 // ☐ ☐ ☐ ☐ ☐ 15 16 17 18 19 -> 3 3 3 3 3 while (1) { int randPos = rand() % 20; // 0 - 19 사이의 숫자 반환 // 19 -> (3, 4) int x = conv_pos_x(randPos); int y = conv_pos_y(randPos); if (arrayAnimal[x][y] == -1) { return randPos; } } return 0; } int conv_pos_x(int x) { // 19 -> (3,4) return x / 5; } int conv_pos_y(int y) { // 19 -> 19 / 5 ? 몫은 3, 나머지 4 return y % 5; // y를 5로 나눈 나머지 값 } void printfAnimals() { printf("\n======== 이건 비밀인데 . . 몰래 보여줍니다 =======\n\n"); for (int i = 0; i < 4; i++) { for (int j = 0; j < 5; j++) { printAlign(strAnimal[arrayAnimal[i][j]], 8); } printf("\n"); } printf("\n============================================\n\n"); } void printQuestion() { printf("\n\n(문제)\n"); int seq = 0; // seq // checkAnimal // ☐ ☐ ☐ ☐ ☐ 0 1 2 3 4 0 0 0 0 0 // ☐ ☐ ☐ ☐ ☐ 5 6 7 8 9 1 0 0 0 0 // ☐ ☐ ☐ ☐ ☐ 10 11 12 13 14 // ☐ ☐ ☐ ☐ ☐ 15 16 17 18 19 for (int i = 0; i < 4; i++) { for (int j = 0; j < 5; j++) { // 카드를 뒤집어서 정답을 맞혔으면 ' 동물 이름' if (checkAnimal[i][j] != 0) { printAlign(strAnimal[arrayAnimal[i][j]], 8); } else { char temp[16]; sprintf(temp, "%d", seq); // 숫자를 문자열로 바꿔서 printAlign(temp, 8); // 한글처럼 정렬 } seq++; // 아직 뒤집지 못했으면 (정답을 못맞혔으면) 뒷면 -> 위치를 나타내는 숫자 } printf("\n"); } } int foundAllAnimals() { for (int i = 0; i < 4; i++) { for (int j = 0; j < 5; j++) { if (checkAnimal[i][j] == 0) { return 0; } } } return 1; // 모두 다 찾음 } int getVisibleWidth(const char *str) { int width = 0; while (*str) { if ((*str & 0xF0) == 0xE0) { width += 2; str += 3; } else { width += 1; str += 1; } } return width; } void printAlign(const char *str, int totalWidth) { int visibleWidth = getVisibleWidth(str); printf("%s", str); for (int i = 0; i < totalWidth - visibleWidth; i++) { printf(" "); } }
-
해결됨(2026) 일주일만에 합격하는 정보처리기사 실기
반복문 자료 질문드립니다.
28분 13초 왼쪽 하단 코드#include <stdio.h>int main() { for (int i = 0; ; i++) { if (i >= 5) { break; } printf("i의 값 : %d\n", i); }}주신 자료에 보면출력값으로i의 값 : 0i의 값 : 1i의 값 : 2i의 값 : 3i의 값 : 4이렇게 나와있습니다.그런데 i의 값 : 5 까지 나와야 하는 것 아닌지 여쭙고 싶습니다.
-
해결됨(2026) 일주일만에 합격하는 정보처리기사 실기
유료결제 후회 중입니다. 3번 낙방 설명은 똑같고
전반적으로 해설이 혼자 푸는데 이야기하시는 느낌이닌다 다른 글도 그렇던데... 유투브로 쉽다쉽다 샘플영상 올리셔서 돈 냈는데 설명이 두서가 없어요 친절하지도 않고 띄엄띄엄 느낌이고 인쇄물은 성의없고... 죄송합니다 돈낸 사람으로서 느낀점 말씀드립니다.마지막 포인터 문제 전반적인 해설 간략히 요청드립니다.
-
해결됨(2026) 일주일만에 합격하는 정보처리기사 실기
생성자 호출순서 특강 PDF 업로드 일자
안녕하세요!강의 정말 잘 듣고있습니다최근에 특강으로 올려주신JAVA 생성자 호출순서 특강편 PDF 파일언제 올려주시는지 문의드립니다!"생성자 호출순서"만 다뤄보자! (13개 코드예제)
-
해결됨(2026) 일주일만에 합격하는 정보처리기사 실기
23년 1회 Java 관련 질문이 있습니다.
26:31 에서 static int b=0이 정적변수라고 말씀하셨는데요.... 그러면 나중에 출력하는 곳에서 네번째 st.a 출력값은 20인데, 두번째 st.b 출력값은 11이 된다고 하셨는데 class Static란에서 정적변수로 b=0을 선언했으니까 0이 아닐까 하고 헷갈리거든요. 답변 부탁드립니다.
-
해결됨(2026) 일주일만에 합격하는 정보처리기사 실기
14 << 3을 정수로 출력한다면 0인가요 112인가요
영상 보면 모두 이진수로 표현된 자릿수 안에서만 움직이는 것 같은데, 그렇게 되면 14의 이진수 표현이 1110인데, 왼쪽으로 3번 밀면 0000이 되지 않나요? 이걸 정수로 출력한다고 하면 0이 되는데, 이건 아닐 것 같아서요;
-
해결됨(2026) 일주일만에 합격하는 정보처리기사 실기
14분 4초
자식 클래스가 재정의하지 않은 것인지 판단하는 것은 부모 클래스에 show(int x)로 정의된 메서드가 없어서 부모클래스에서 정의되지 않았기에 자식클래스가 재정의되지 않았다고 판단되고 그렇기에 업캐스팅 원칙에 의해 부모 클래스에 없는 것은 호출하지 않기때문에 출력값이 부모클래스에서 나온것일까요?
-
해결됨(2026) 일주일만에 합격하는 정보처리기사 실기
업캐스팅 질문
마지막 예시 코드에서 메서드가 아닌 변수를 호출하면 (p.name,c.name) 변수 앞에 선언된 데이터 타입(Parent, Child)을 따라가나요?
-
해결됨(2026) 일주일만에 합격하는 정보처리기사 실기
res실행 이유
38분에서 printf 안에 들어가는 값은 a와 sum이고 a는 5로 나와있고 sum은 없고 nsum만 있는데 왜 res를 실행하는지 궁금합니다
-
미해결C 프로그래밍 - 입문부터 게임 개발까지
섹션6. 프로젝트 소스코드 올려드려요.
소스코드 필요하신분들 보고하세요! 저두 강의 많이 돌려봤습니다 ㅋㅋㅋㅋ 저는 맥환경이라서 Visual Studio Code를 마이크로소프트에서 다운이 안되더라구요 ㅠ그래서 인터넷에서 VScode를 사용하구 있는데요. 저와 동일하게 맥 환경을 사용하시는 분은 랜덤함수 사용하실때 #include <> 이 부분에서 3가지 추가해주셔야 랜덤함수 오류없이 올바르게 사용가능합니다.#include <stdio.h> #include <stdlib.h> #include <time.h> int main(void) { srand(time(NULL)); printf("\n\n === 아빠는 대머리 게임 === \n\n"); int answer; // 사용자 입력값 int treatment = rand() % 4; // 발모제 상태 (0-3) int cntShowBottle = 0; // 이번 게임에 보여줄 병 갯수 int preCntShowBottle = 0; // 앞 게임에 보여준 병 갯수 // 서로보여주는 병 갯수를 다르게 하여 정답률 향상 (처음에 2개 -> 다음엔 3개) // 3번의 기회 (3번의 발모제 투여 시도) for (int i = 1; i <= 3; i++) { int bottle[4] = {0, 0, 0, 0}; // 4개의 병 do { cntShowBottle = rand() % 2 + 2; // 보여줄 병 갯수(0-1, + 2 -> 2, 3) } while (cntShowBottle == preCntShowBottle); preCntShowBottle = cntShowBottle; int isIncluded = 0; // 보여줄 병 중에 발모제가 포함되었느지 여부 (1 포함) printf("> %d 번째 시도 : ", i); // 보여줄 병 종류를 선택 for (int j = 0; j < cntShowBottle; j++) { int randBottle = rand() % 4; // 0-3 // 아직 선택되지 않은 병이면, 선택 처리 if (bottle[randBottle] == 0) { bottle[randBottle] = 1; if (randBottle == treatment) { isIncluded = 1; } } // 이미 선택된 병이면, 중복이므로 다시 선택 else { j--; } } // 사용자에게 문제 표시 for (int k = 0; k < 4; k++) { if (bottle[k] == 1) { printf("%d ", k + 1); } } printf(" 물약을 머리에 바릅니다. "); if (isIncluded == 1) { printf(" >> 성공 ! 머리가 났어요 !! \n"); } else { printf(" >> 실패 ! 머리가 나지 않았어요 !! \n"); } printf("\n . . . 계속 하려면 아무키나 누르세요 . . ."); getchar(); } printf("\n\n 발모제는 몇 번일까요? "); scanf("%d", &answer); if (answer == treatment + 1) { printf("\n >> 정답입니다."); } else { printf("\n >>땡! 틀렸어요. 정답은 %d 입니다\n", treatment + 1); } return 0; }
-
해결됨(2026) 일주일만에 합격하는 정보처리기사 실기
9분 48초
유형 3번에서 상속관계이지만 부모클래스도 자식클래스도 기본 생성자가 없기에 부모의 기본생성자를 호출하고 자식 클래스 호출을 안하는 것인가요?
-
해결됨(2026) 일주일만에 합격하는 정보처리기사 실기
상속과 업캐스팅 7분 45초
수업을 계속 듣다보니 복습도 하며 각각 개념을 정리할 때는 이해가 되는데 이렇게 유형 2번과 같은 문제를 풀다보니 상속과 업캐스팅이 헷갈려서 문의드립니다. 유형 2번처럼 Parent obj = new Child(); Parent와 Child 클래스명이 다르기에 업캐스팅이니까 위에서 자식클래스에서 Child: 20만 출력하는 것일까요?만약 유형 2번 문제가 상속문제였다면 부모클래스에서 Parent: 10과 Child: 20을 모두 출력하는 건가요? 이처럼 업캐스팅은 자식클래스만 출력하는 것이고 상속은 부모클래스 먼저 그리고 자식클래스를 출력하는 것인가요?