게시글
질문&답변
혹시 이건 수학적 사고가 부족한 걸까요?
안녕하세요?프로그래밍을 공부하시는 분들이 자주 하시는 질문입니다 😊 열심히 고민을 해서 코드를 만들고 올바로 동작하는 것을 본 뒤에 퀴즈 정답을 봤더니 선생님은 허무하게 한 줄로 끝내더라 라는 것인데요. 결론부터 말씀드리면 아주 정석으로 올바른 길을 잘 걷고 계십니다.제가 수영을 배울 때 선생님께서는 자유형을 처음에는 팔을 쭉 뻗고 돌리라고 하셨어요. 그런데 옆 레인의 사람들은 모두 팔을 ㄱ자로 접었다가 펼쳤다가 하면서 멋있게 팔을 젓더라구요. 저도 바로 그렇게 할 수 있을 것 같았으나 그냥 시키는대로 하였고, 머지 않아 단계적으로 자세를 교정해주시면서 그분들처럼 보다 자유롭게 팔 동작을 하게 되었습니다. 시간이 지나고 보니 팔을 쭉 뻗고 돌리는 과정을 겪은 덕분에 오히려 호흡이 자연스럽고 힘이 많이 들어가지 않게 수영을 할 수 있었던 것 같아요.비록 지금은 geforce3080ti 님께서 가까운 길을 두고 먼 길로 돌아가는 것처럼 보이실 수 있지만, 충분히 스스로 고민을 해보시고 문제 해결을 한 다음 정답 코드를 보면서 나의 코드와 어떻게 다른지를 비교하고, 저렇게 하면 보다 간편하고 효율적으로 코드를 작성할 수 있겠구나 하는 것을 배우셨다면 그것으로 충분한 가치를 지닙니다. 오히려 단계적으로 잘 성장하고 있는 과정이며 코드가 다소 복잡하게 느껴지더라도 지금 레벨에서는 괜찮으니 신경쓰지 않으셔도 좋습니다 😍감사합니다.
- 0
- 2
- 29
질문&답변
영상이 재생이 안됩니다.
안녕하세요?먼저 수강에 불편드려 죄송합니다. 영상 재생 문제 관련은 사용하시는 인프런 측에 문의를 해주시면 보다 빠르고 정확하게 도움을 받으실 수 있습니다. 번거로우시겠지만 우측 하단 1:1 문의하기(나뭇잎 버튼)로 문의 부탁드립니다. 🙏🏻 문의글에는 본 질문 게시글에 작성해주신 브라우저 정보 및 증상을 그대로 복붙해주시면 되겠습니다.문제가 해결될 때까지는 온라인에 무료로 공개된 유튜브 영상으로 시청을 부탁드립니다. 클래스 이전까지의 내용은 100% 동일하게 제공되고 있습니다 😊👉https://youtu.be/NQq0dOoEPUM감사합니다.
- 0
- 3
- 19
질문&답변
이중 반복문 (후반전) 오른쪽으로 치우친 별 쌓기에 질문이 있습니다.
안녕하세요?작성해주신 코드로도 원하는 결과물을 출력할 수 있습니다. 반복 횟수 또한 동일하기 때문에 비효율적인 요소는 없어요. 다만 인프런 AI 인턴의 답변처럼 마지막에 별(*)을 출력하고 줄바꿈하는 부분은 반복문 k 의 조건을 '작다' 에서 '작거나 같다' 로 바꿈으로써 조금 더 간소화할 여지가 있네요 😄 for (int i=0; i이중 반복문 학습을 이렇게 강의와 다르게 응용해주시는 것, 너무 좋은 학습 방법입니다 ^^ 또 다른 질문 생기면 언제든 글 남겨주세요!감사합니다.
- 0
- 2
- 59
질문&답변
응용이 어렵습니다.
안녕하세요?기본편에서 다루는 내용, 특히 클래스 전까지 다루는 내용은 단 하나도 빠트리지 말고 모두 완전히 익히셔야 합니다. 너무 중요한 내용이며 다른 프로그래밍 언어에서도 동일한 개념이 적용되거든요. 그래서 다소 힘드시겠지만 반복문으로 돌아가서 다시 한 번 강의를 듣고 이해하려고 노력해보시면 좋겠습니다. 이해가 가지 않는 부분이 있다면 몇 번이고 괜찮으니 이 곳에 질문을 남겨주세요! 어떤 부분이 어떻게, 어디서 이해가 안가는지 알려주시면 제가 어떻게 해서든지 데이모스님을 이해시켜 드리도록 하겠습니다. ^^ 시간이 조금 걸리더라도, 알고 넘어갑시다.감사합니다.
- 0
- 2
- 106
질문&답변
IntelliJ가 보이지 않습니다.
안녕하세요?IntelliJ 프로그램은 압축파일에 포함되지 않아요. 아래 링크에 접속하셔서 다운로드 및 설치를 부탁드리겠습니다 😊스크롤을 조금 내리셔서 Community Edition 을 받으시면 됩니다.👉 https://www.jetbrains.com/idea/download/?section=windows(사진)감사합니다.
- 0
- 3
- 90
질문&답변
JDK 버전 문의
안녕하세요?21 버전을 사용하셔도 수업 내용 실습을 따라하시기에는 큰 문제는 없습니다. 현재까지 파악하고 있는 부분은 다음 링크에 답변되어 있으니 참고해주시면 좋겠습니다.👉 https://www.inflearn.com/community/reviews/113451혹시라도 학습하시는 과정에서 버전에 따른 차이로 의심되는 문제가 발생하는 경우, 질문을 남겨주시면 확인 후 답변 드리도록 하겠습니다 😊감사합니다.
- 0
- 2
- 79
질문&답변
BlackBox 파일 내에서 메소드 정의
안녕하세요?public 은 접근 제어자 중 하나로 각 접근 제어자의 의미는 다음과 같습니다. 아무것도 붙이지 않은 경우 default 로 해당 메소드는 같은 패키지 내에서만 접근 가능합니다.private : 해당 클래스 내에서만 접근 가능 public : 모든 클래스에서 접근 가능 default : (아무것도 적지 않았을 때) 같은 패키지 내에서만 접근 가능 protected : 같은 패키지 내에서, 다른 패키지인 경우 자식 클래스에서 접근 가능static 은 객체를 생성하지 않고도 사용(호출)할 수 있도록 하기 위해 사용합니다. (= 클래스 메소드)static void callServiceCenter() { System.out.println("서비스 센터(1588-oooo) 로 연결합니다."); }static 이 붙지 않으면 반드시 객체를 생성한 후에만 해당 메소드를 사용할 수 있지요.void 와 int 는 반환형을 의미하며 메소드 내부의 동작을 수행하고 나서 어떤 형태의 데이터를 반환할지를 결정짓습니다. int 는 정수값을 반환하게 되며, String 은 문자열을 반환하게 됩니다. // 정수 값 반환 int getPrice() { return price; } // 문자열 반환 String getResolution() { if (resolution == null || resolution.isEmpty()) { return "판매자에게 문의하세요."; } return resolution; }단, void 라고 적게 되면 해당 메소드는 아무 값을 반환하지 않겠다는 의미가 됩니다.void setModelName(String modelName) { this.modelName = modelName; }그래서 void 라고 작성하게 되면 반환값이 없는 메소드, 그 외에는 입력한 반환형에 해당하는 데이터를 반환하는 메소드가 됩니다. 데이터를 반환하는 메소드는 이 메소드를 호출하는 쪽에서 반환값을 받아서 사용할 수 있게 되지요 😊감사합니다.
- 0
- 1
- 95
질문&답변
동기화
안녕하세요?네 맞습니다.문의글에 남겨주신 코드는 아래와 같이 예외를 발생시키는 부분이 있기 때문에 도중에 문제가 발생하기는 하지만 이 부분이 없다면 말씀주신 것처럼 for 반복문으로 1-5 까지 5개씩의 반복을 2개 만들었기 때문에 총합 10개의 방을 청소하게 됩니다. if (i == 2) { throw new RuntimeException("못해먹겠다!!"); }연습삼아 for 반복문 내 조건을 5가 아닌 다른 값으로 바꿔보시면 그에 맞게 증가하는 것을 확인하실 수 있을 거에요 🙂 가령 8로 설정하게 되면 2명이 8개의 방을 청소하게 되므로 16까지 출력이 될 것입니다.감사합니다.
- 0
- 2
- 76
질문&답변
Iterator 문의
안녕하세요?먼저 첫 번째 질문에 답변 드립니다.작성해주신 두 코드는 같은 로직을 수행하며, 예제의 상황에서는 동작에 아무런 차이가 없습니다.다만 String s 변수에 값을 담아두는 경우 아래와 같은 이점이 있을 수 있어요.이후에 해당 객체를 여러 번 참조하거나 다른 로직에 활용하기 쉬워요.코드를 확장하거나 디버깅할 때 수월할 수 있어요.결론적으로 동작 자체에는 문제도 없고 차이도 없습니다. 단, 해당 값을 여러 곳에서 재사용할 필요가 있다거나, 현재 순회에서의 값은 무엇인지 디버깅 등을 통해 확인하고자 하는 경우에는 String s 변수로 두는 것이 유리할 수 있습니다. 이러한 필요에 따라 코드를 어떠한 스타일로 작성할지 결정하시면 됩니다 :) 두 번째 질문에 답변 드립니다.먼저 코드 1과 코드 2의 동작은 다르게 작성되었습니다. [코드 1]it = list.iterator(); while (it.hasNext()) { String s = it.next(); // it.next() 를 한 번만 수행 if (s.contains("(알 수 없음)")) { it.remove(); // 삭제 } } it = list.iterator(); while (it.hasNext()) { System.out.println(it.next()); } [코드 2]it = list.iterator(); while (it.hasNext()) { String s = it.next(); // 1) it.next() 를 처음 실행 if (s.contains("(알 수 없음)")) { it.remove(); // 삭제 } else { System.out.println(it.next()); // 2) it.next() 를 한 번 더 실행 } }코드 1에서는 하나의 반복 내에서 it.next() 를 한 번만 수행하는 반면에 코드 2에서는 it.next() 를 처음 실행하고 나서 else 구문을 만나게 되면 한 번 더 수행을 하게 됩니다. 다음 순회로 바로 건너 뛰어버리는 것이죠. 즉 하나의 반복에서 2개의 요소를 꺼내게 되는 경우가 발생하게 됩니다. 이는 의도와는 다른 동작이 되는 것인데요.이를 방지하기 위해서는 첫 번째 질문에서 답변드린 것처럼 코드를 아래와 같이 수정하시면 됩니다. 출력하는 부분에 it.next() 대신 s 변수를 활용하는 것입니다.it = list.iterator(); while (it.hasNext()) { String s = it.next(); // 1) it.next() 를 한 번만 실행 if (s.contains("(알 수 없음)")) { it.remove(); // 2) 삭제 } else { System.out.println(s); // 3) 삭제 대상이 아니라면 출력 } }이렇게 수정 후 다시 한번 확인을 부탁드리며, 궁금증 해결에 도움되길 바라겠습니다 🙂감사합니다.
- 0
- 1
- 71
질문&답변
코드 순서 문의
안녕하세요?자바에서 클래스 내 메소드의 정의 순서는 코드의 동작에 영향을 주지 않아요. 그래서 강의에서 정의한 순서나, 김재훈님께서 정의하신 순서나 동작은 동일합니다. 그 메소드가 어디엔가 잘 정의만 되어 있으면 문제가 없답니다 😊풀이해주신 코드도 배열과 반복문을 활용하여 강의에서 알려드린 코드보다 더 잘 작성해주셨습니다 👍감사합니다.
- 0
- 1
- 93