inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

주말코딩님의 게시글

주말코딩 주말코딩

@weekendcode

수강생
5,895
수강평
741
강의 평점
4.8

게시글 1390

질문&답변

조건 반복문 질문: 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
조회수
53

질문&답변

정처기 26-2회. 9번 질문드립니다!

안녕하세요, 보통 작성하는 부분의 칸이 아예 나눠져 있으면 부분점수를 주는 편이고 하나가 통으로 문제의 답을 쓰는 형태였다면 전부 틀린 것으로 처리됩니다.

좋아요수
0
댓글수
1
조회수
73

질문&답변

이론 보면서 질문이 있습니다.

사실상 거의 나오지 않는다고 보셔도 됩니다만, 출제 기준의 범위이긴 합니다. 중요한 것만 외우면 좋겠다만 가끔씩 정말 말도 안되게 "애자일" 이런 단어가 나오기도 합니다. 결론적으로는, 훑고 넘어가셔도 됩니다.

좋아요수
0
댓글수
2
조회수
68

질문&답변

유튜브(정보처리기사 실기 | 26년 2회 기출문제 코드 해설)

안녕하세요. 일단 주소를 넘기는 것과 값을 넘기는 것은 C언어의 문법 스펙이기 때문에 별도로 설명드릴만한 부분은 없습니다. 차이는 아시겠지만 주소는 &를 붙여서 직접 보내고, 값은 그냥 글자 그대로 변수만 보냅니다. 비유를 좀 하자면, 우리가 원하는 것은 집 안에 가구를 바꾸고 싶다는 것입니다. 집 안에 가구를 바꾸려면 집 주소를 찾아가서 거기 안에 있는 가구를 빼고, 다른 가구를 넣어야겠죠. 그게 주소를 찾아가서 값을 직접 바꾸는 것입니다. 데이터만 주는 것은 그냥 가구만 바깥으로 복사해서 전달하는 겁니다. 실제 집하고는 전혀 상관이 없이 가구만 복사해서 가지고 나갔고, 거기 안에서 사용하고 끝납니다. 실제 가구가 빠져나온 주소하고는 전혀 상관없죠. 비유를 하자면 그렇고, 실제로 값을 바꾸고 싶다면 해당 메모리 주소로 가서 값을 바꿔야 합니다.

좋아요수
0
댓글수
2
조회수
126

질문&답변

262 정처기 실기 C언어코딩

안녕하세요, 칸이 따로 4개가 있었으면 부분 점수를 줍니다만 보통 코드 문제는 하나가 통으로 한 문제입니다. 그런 경우에는 전체가 틀린 것으로 계산됩니다.

좋아요수
0
댓글수
1
조회수
41

질문&답변

정보처리기사 262 실기 Hash(해시) 질문

보통 대문자는 약자가 있는 용어에 쓰긴 하는데, 그 정도면 정답처리 해 주지 않을까 싶습니다.

좋아요수
0
댓글수
2
조회수
72

질문&답변

static 변수 질문입니다.

안녕하세요. 핵심만 정리하면 다음과 같습니다. 규칙 하나면 됩니다: 필드(static 포함)는 “참조 변수의 선언 타입”으로 결정됩니다. 메서드는 실제 객체 타입(런타임)으로 결정되지만, 필드는 반대입니다. 부모와 자식에 같은 이름의 static 변수가 있으면 오버라이딩이 아니라 숨김(hiding) 이며, 두 변수는 서로 별개입니다. Parent.a // 10 (부모 것) Child.a // 20 (자식 것) Parent p = new Parent(); p.a // 10 Child c = new Child(); c.a // 20 Parent pc = new Child(); pc.a // 10 ← 실제는 Child지만 선언 타입이 Parent라 부모 것 즉 “무조건 부모 것”이 아니라, 어떤 타입의 이름/참조로 접근했느냐 에 따라 달라집니다. 업캐스팅한 참조로 접근하면 그 참조의 선언 타입인 부모 것이 나옵니다.

좋아요수
0
댓글수
2
조회수
58

질문&답변

파이썬 4강 질문입니다.

결론부터 말씀드리면 [:-1:-1] 은 빈 리스트 [] 가 출력됩니다. 다만 그 전에 짚어야 할 부분이 있습니다. [0::-1] 은 15432 가 아니라 [1] 이 출력됩니다. 슬라이싱은 [start:stop:step] 구조이고, step이 음수일 때는 각 값의 기본값이 다음과 같이 바뀝니다. start 생략 시 → 마지막 인덱스 (끝) stop 생략 시 → 맨 앞을 지나서 끝까지 (0번 인덱스 포함) 이 기준으로 하나씩 보겠습니다. [::-1] 은 start가 마지막(4번), stop이 맨 앞을 지나서까지이므로 끝에서 앞으로 전부 훑어 [5, 4, 3, 2, 1] 이 됩니다. 여기까지는 말씀하신 내용이 맞습니다. [0::-1] 은 start가 0번 인덱스(값 1), step이 -1입니다. 즉 0번에서 시작해 뒤쪽(더 작은 인덱스)으로 가려는데, 0번보다 앞은 없으므로 자기 자신만 담고 끝납니다. 그래서 [1] 이 됩니다. 15432 가 나오려면 start가 0이고 앞으로 진행해야 하는데, step이 -1이면 방향이 반대이므로 그런 결과는 나올 수 없습니다. 이제 질문하신 [:-1:-1] 입니다. start는 생략되었으니 마지막 인덱스인 4번이고, stop은 -1 인데 이는 인덱스 4를 가리킵니다. 결국 start(4)에서 시작해 stop(4) 직전까지 뒤로 가야 하는데, 시작 지점과 멈추는 지점이 같으므로 담을 값이 하나도 없습니다. 그래서 [] 가 출력됩니다. 정리하면 다음과 같습니다. lst = [1, 2, 3, 4, 5] lst[::-1] # [5, 4, 3, 2, 1] lst[0::-1] # [1] lst[:-1:-1] # [] 핵심은 stop 이 exclusive(미포함) 이라는 점입니다. -1 은 마지막 요소의 인덱스이므로, 뒤에서부터 훑을 때 시작 지점과 겹쳐 아무것도 남지 않게 됩니다.

좋아요수
0
댓글수
2
조회수
66

질문&답변

부모의 생성자 관련 질문

안녕하세요, 질문이 제가 이해가 조금 어렵습니다. 우선, " 부모를 안하고 쭉 내려오는 경우가 있던데 그럴땐 child() 없는 경우엔 그냥 쭉 내려가도 괜찮은 걸까요?" 명시적으로 부모의 생성자를 호출하는 경우가 아니면, 파라미터가 없는 기본생성자만 실행하시는 것이 맞습니다. 자식의 this() 체인을 다 밟고 나서도 super가 없다면, 가장 마지막 체인에서 super()가 생략되어있다고 생각하시고 마지막에 부모 기본 생성자로 넘어가면 됩니다.

좋아요수
0
댓글수
2
조회수
61