말그대로 고민있어요
2106
안녕하세요 cs 전공공부를 이번 가을부터 해서 노베이스라 미리 공부중인 유학생인데요. 친구추천으로 알게 되었어요. 그래서 아예 뭔지도 모르고 그냥 강의 구매해서 강의 듣고 강의대로 나름대로 적용시키면서 하고 있는데요... ! 혹시 이 강의에는 책이 없나요? 책 없이 영상들으면서 하고 있긴 한데 몰라서 여쭈어보아요!
그리고 제가 나름대로 하고 있긴 한데 사실 아예 말그대로 입문과정이라 그냥 현재로선 강의를 듣고 이해하고 계속 다음강의 다음강의 쭉.. 그냥 듣고 있긴 한데 사실 어떻게 가닥을 잡고 딱 공부를 해야할지 모르겠어요.. 말그대로 학습법에 대한 고민이 있는 것 같아요.. 하하..
전공이 cs인 유학생이긴 한데 정말 도전정신으로 선택한거라 기왕 결정한 거 제대로 잘 하고싶은데요.... 혹시 학습법이나 이 강의를 통해서 좋은 결과를 만들어낼 수 있는 그런 팁 같은 것들을 알려주실 수 있으실까요 ..? 예를 들어서 강의 하나하나씩 끝낼 때마다 연습을 어떻게 해야할지 아니면 뭐.. 네 .. 잘 떠오르지가 않네요 ..
저의 긴 글 읽어 주셔서 감사합니다...
답변 기다릴게요 !
답변 1
0
안녕하세요?
먼저 강의를 수강해주셔서 감사합니다.
아쉽지만 본 강의는 아직은 책으로 나오지 않았어요 😥
사람마다 생각이 다르겠지만 저는 프로그래밍 언어 공부의 꽃은 '프로젝트' 라고 생각합니다. 과거에도 그랬고 지금도 변함이 없어요. 강의 도중에 지금까지 배운 내용을 바탕으로 만들 수 있는 프로젝트도 좋고, 모든 강의를 다 보고 나서 진행하는 프로젝트도 좋습니다.
어떤 주제를 하나 고르고 나서 자바로 직접 구현을 해보시는 거에요. 그러다 보면 다양한 시행착오를 겪으면서 "이럴 땐 어떻게 하지?" "저럴 땐 어떻게 하지?" 많은 고민을 하게 될 겁니다. 그 과정에서 실패도 해보고 성공도 해보고 해결되지 않는 부분에 대해서는 주변에 물어보거나 구글링을 하면서 새로운 것을 배워보는 것도 정말 좋습니다.
그리고 최근에 많은 사랑을 받고 있는 ChatGPT 가 특히 코딩 공부하기에 더할 나위 없이 좋은 친구에요. 이 친구에게 "이런 부분을 자바로 구현하고 싶어" 와 같이 물어보는 것도 정말 좋은 방법입니다. 그래서 내가 작성한 코드와 ChatGPT 가 알려주는 코드를 비교해보면서 배울 점을 찾아보는 것도 좋아요. 또는 내가 작성한 코드를 ChatGPT 에게 "내가 작성한 코드를 확인해줘. 어떻게 개선할 수 있을까?" 이렇게 요청하는 것도 좋습니다. 그러면 코드 리뷰와 피드백까지 받을 수 있으니까요!
아래는 제가 ChatGPT 와 잠시 대화해본 예시입니다.
(질문 1) 자바로 만들어볼 수 있는 재미있고 간단한 미니 프로젝트 주제를 3가지 알려줘
(답변) 재미있고 간단한 자바 미니 프로젝트 주제를 세 가지 드리겠습니다:
로또 번호 생성기: 사용자로부터 로또 번호를 몇 개 생성할지 입력받고, 각 로또 번호는 1부터 45까지의 숫자 중 6개를 랜덤으로 선택하여 출력하는 프로그램을 만들어보세요. 중복된 숫자가 없도록 처리해야 합니다.
단어 맞추기 게임: 미리 정해둔 몇 개의 단어 중 하나가 랜덤으로 선택되고, 사용자는 그 단어를 맞추는 텍스트 기반 게임을 만들어보세요. 사용자가 입력한 문자열과 정답 단어를 비교하여 맞추거나 오답을 출력해줍니다.
사전 검색 프로그램: 미리 정의된 단어들로 이루어진 간단한 사전을 만들고, 사용자로부터 단어를 입력받아 그 뜻을 출력하는 프로그램을 구현해보세요. HashMap을 활용하여 단어와 뜻을 연결시킬 수 있습니다.
위의 프로젝트들은 쉽고 재미있으며, 자바 기본 문법과 조건문, 반복문, 함수 등을 연습할 수 있는 좋은 기회가 될 것입니다. 또한 자바 입출력과 랜덤 숫자 생성, 데이터 구조 활용 등을 배우는데 도움이 될 것입니다. 프로젝트를 통해 자신의 능력을 향상시키시길 바랍니다. 즐거운 프로그래밍 되시기를 바라겠습니다!
(질문 2) 자바로 로또 번호 생성기 코드를 만들어줘
(답변) 자바로 간단한 로또 번호 생성기 코드를 제공해드리겠습니다. 이 코드는 1부터 45까지의 숫자 중 6개를 랜덤으로 선택하여 로또 번호를 생성합니다. 중복된 숫자가 없도록 처리하였습니다.
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class LottoNumberGenerator {
public static void main(String[] args) {
List<Integer> lottoNumbers = generateLottoNumbers();
System.out.println("로또 번호: " + lottoNumbers);
}
public static List<Integer> generateLottoNumbers() {
List<Integer> numbers = new ArrayList<>();
// 1부터 45까지 숫자를 리스트에 추가
for (int i = 1; i <= 45; i++) {
numbers.add(i);
}
// 리스트를 섞어서 순서를 무작위로 변경
Collections.shuffle(numbers);
// 섞은 후 첫 6개의 숫자를 선택하여 로또 번호로 설정
List<Integer> lottoNumbers = numbers.subList(0, 6);
return lottoNumbers;
}
}이 코드는 generateLottoNumbers() 메서드를 호출하여 로또 번호를 생성하고, 생성된 로또 번호를 출력합니다. Collections.shuffle() 메서드를 사용하여 리스트의 순서를 무작위로 섞어서 로또 번호를 선택합니다.
위의 코드를 실행하면 로또 번호가 출력될 것입니다. 실행할 때마다 다른 로또 번호가 생성되는 것을 확인할 수 있습니다. 이렇게 간단하게 자바로 로또 번호 생성기를 만들 수 있습니다. 즐거운 코딩 되시기 바랍니다!
(질문 3) 내가 작성한 로또 번호 생성기 코드를 확인해줘. 어떻게 개선할 수 있을까?
import java.util.Random;
public class Sample {
public static void main(String[] args) {
Random random = new Random();
System.out.println(random.nextInt(45) + 1);
System.out.println(random.nextInt(45) + 1);
System.out.println(random.nextInt(45) + 1);
System.out.println(random.nextInt(45) + 1);
System.out.println(random.nextInt(45) + 1);
System.out.println(random.nextInt(45) + 1);
}
}(답변) 먼저, 주어진 코드를 보면 Random 클래스를 사용하여 1부터 45까지의 난수를 생성하여 출력하는 부분이 여러 줄로 반복되는 것을 알 수 있습니다. 이러한 방식으로도 로또 번호를 생성하는 것은 가능하지만, 두 가지 개선점이 있습니다:
중복된 번호 방지: 현재 코드에서는 6개의 난수가 각각 독립적으로 생성되기 때문에 중복된 번호가 생성될 수 있습니다. 로또 번호는 중복되지 않아야 하기 때문에 중복을 방지하는 로직을 추가해야 합니다.
배열 또는 리스트 활용: 난수를 여러 번 반복해서 생성하려면 여러 변수를 사용하는 것보다 배열 또는 리스트를 활용하는 것이 효율적입니다.
아래는 개선된 코드 예시입니다:
import java.util.Random;
import java.util.ArrayList;
import java.util.List;
public class LottoNumberGenerator {
public static void main(String[] args) {
List<Integer> lottoNumbers = generateLottoNumbers();
System.out.println("로또 번호: " + lottoNumbers);
}
public static List<Integer> generateLottoNumbers() {
List<Integer> lottoNumbers = new ArrayList<>();
Random random = new Random();
while (lottoNumbers.size() < 6) {
int randomNumber = random.nextInt(45) + 1;
if (!lottoNumbers.contains(randomNumber)) {
lottoNumbers.add(randomNumber);
}
}
return lottoNumbers;
}
}위의 코드에서 generateLottoNumbers() 메서드를 호출하면 중복되지 않는 6개의 로또 번호가 리스트에 담겨 반환됩니다. 중복을 방지하기 위해 while 루프를 사용하고, 이미 리스트에 있는 번호가 생성되면 다시 난수를 생성하여 추가합니다.
이렇게 개선된 코드를 사용하면 중복 없이 6개의 로또 번호가 생성됩니다. 즐거운 프로그래밍 되시기 바랍니다!
어떤가요? 생각보다 쓸만한 녀석이죠? 🙌
이런 과정을 통해 프로젝트를 처음 생각했던 모습 그대로 완성하시고 나면 굉장히 큰 보람도 느끼고 자신감도 생길 거에요. 배운 내용을 복습하면서 몰랐던 새로운 것들도 많이 접할 수 있게 될 것입니다 😊
훌륭한 개발자가 되기를 응원하겠습니다!
감사합니다.
방산 SW 개발자가 되기 위한 조언을 부탁드립니다!
1
71
1
JAVA로 백엔드 프로젝트
0
62
1
26년1회 실기 합격할수 있을까??ㅠㅠ
0
174
1
자바 실무 단계
0
312
2
Desktop용 게임 개발에도 도움이 될까요?
0
201
1
진로가 큰 걱정입니다...
0
298
1
공부 방향
0
318
1
안녕하세요! 실무와 관련되서 질문드립니다!
0
334
1
함수형 인터페이스 활용
0
356
1
WebFlux를 실무에 적용하기 전에 고민이 있습니다.
0
303
0
코딩테스트 준비
0
467
1
공부하다 진도를 못 나가고 있어요 ㅜㅜ
0
408
1





