공부 내용 및 활동 내용 |
1. 개인 과제 2단계 완성
|
음... TIL을 오랫동안 쉬었다. (8 -> 13 4일을 쉬었다..)
그 이유는 공부를 하던 도중 공부 방법이 막막하기도 하고, 어떻게 공부할지 감을 못 잡겠어서 잠시 휴식을 가졌다.
물론 스파르타에서 제공한 강의랑 과제 는 다 보고 구현하긴 했다.
1. 개인 과제 2단계 완성
1.1 개인 과제 개요
- 계산기를 구현
- +, -, *, / 의 4가지 연산자와 2개의 변수를 입력받아 계산하는 것
- 1단계는 "클래스 없이", 2단계는 "클래스를 가지고", 3단계는 클래스와 Enum, 제너릭, 람다 스트림을 활용
1.2 1단계
- 내가 느낀 난이도: ★ ★ ☆ ☆ ☆
- 내가 짠 코드의 가독성 : ★ ★ ★ ☆ ☆
- 내가 생각한 완성도: ★ ★ ★ ★ ☆
1.2.1 난이도
-> "구현"만 하는데는 크게 어렵지 않았던 것 같다.
하지만 여기서 마주친 문제 몇 가지들이 있다.
1) Scanner 입력: nextInt()와 nextLine()을 같이 사용 시, 개행문자에 대한 문제
2) 사용자의 입력에 대한 예외 처리: 사용자는 숫자, 연산자 뿐만 아니라 엔터, 스페이스 등 다양한 입력이 가능한데 그것에 대한 예외 처리를 하는 것이 까다로웠다.
3) 코드의 중복: 코드의 중복을 좀 줄이는 것이 힘들었다.
1.2.2 가독성
-> 코드의 가독성이 그리 좋지 못한 것 같다. 메인메소드에서 함수만 실행이 되게 할려고 함수를 이것저것 구현하다보니 이상한 함수들이 많았다. 또한, 네이밍 컨벤션이 아직 좋지 못한 것 같다. 또한, 사용자의 입력이 개발자의 의도대로 들어오지 않을 때까지 생각해서 처리하다보니 코드가 조금 이상한 부분도 많아 보인다.
1.2.3 완성도
-> 과제에서 요구한 기능들을 전부 수행하고 있고, 사용자에게 "exit" 입력받지 않는 한 오류가 발생해 꺼지지 않게 해놨다. 하지만 여기서 숫자만 입력받는 조건에서 try -catch를 통해 처리를 했는데..
public static void inputNum() {
// nextLine()로 받을 때, 저장할 변수
// nextInt() 시, 스페이스로 여러가지 입력이 가능
// exception 오류를 잡기위함
String stringNum;
for (int i = 0; i < nums.length; i++) {
while (true) {
System.out.printf(" %d 번째 숫자를 입력해주세요 : ", i + 1);
stringNum = sc.nextLine();
// 숫자이면 while 문 break, 숫자가 아니면 무한 루프를 통해 정수형을 입력 받음
if (isNumber(stringNum)) {
nums[i] = Integer.parseInt(stringNum);
break;
} else {
System.out.println("잘못된 입력을 하셨습니다. 다시 입력해주세요");
}
}
}
}
//Integer.parseInt()가 작동하면 true, 아니면 false 리턴
public static boolean isNumber(String number) {
try {
int intNum = Integer.parseInt(number);
return true;
} catch (NumberFormatException e) {
return false;
}
}
더 좋은 방법도 있을 것 같고, 정규식을 활용해도 좋아보인다.
1.3 2단계
- 내가 느낀 난이도: ★ ★ ★ ☆ ☆
- 내가 짠 코드의 가독성 : ★ ★ ☆ ☆ ☆
- 내가 생각한 완성도: ★ ★ ★ ☆ ☆
1.3.1 난이도
-> "구현"만 하는데는 크게 어렵지 않았던 것 같다. 단순히 1단계에서 Calculator 클래스를 추가해 연산은 Calculator 클래스에서 해주면 된다. 또한, 콜렉션 프레임워크를 이용해 연산 결과를 저장하고, 삭제하는 것은 기본적인 콜렉션 활용이라 쉬웠다. 마지막으로는 getter setter을 이용해 숫자와 연산자를 바꿔주는 것 이였는데 단순히 구현만 하면되서 크게 어렵지는 않았다.
1.3.2 가독성
-> 오히려 가독성이 클래스를 활용했는데 더 떨어진 것 같다. 물론 class를 활용해서 더 깔끔해질 줄 알았는데 더 가독성이 떨어진 것 같다. 내일 튜터님들에게 찾아가봐야겠다.
1.3.3 완성도
-> 요구한 기능들을 전부 수행하고 실행 시, 오류가 나오지 않게 구현했던 것 같다. 하지만 클래스를 정말 잘 활용했는가 생각해보면 아닌 것 같다. 여기에 대해서 내일 클래스 관련해서 서적을 읽어보고 수정할 계획!!
2. 코딩테스트 문제 풀기
- 현 상태
"프로그래머스" 에 있는 0단계 기초문제 124 문제 중 103문제를 풀었다. 하지만 안 푼 문제 + 못 푼제들이 아직 있다. 1단계 기본적인 문제 해시, 스택큐, 그리디 정도로 몇 문제 풀어본 것 같다.
- 장점
기초 문제를 풀고 느낀 것은 기본적인 자바 변수 선언, 콜렉션 활용 등은 잘 이해했던 것 같다.
- 회고
문제 해결력, 문제 접근 방식 등은 아직 많이 부족하며, 발전하지 못한 것 같다. 또한, 중간 중간 콜렉션 프레임 워크 데이터 추가 삭제 조회 하는 메소드가 기억이 안나 구글링 한 적이 많다. 형변환, stream 활용이 아직은 좀 많이 부족해보인다.
- 개선 방향
1) 지금 현 상태에서 문제를 무작정 푸는 것은 옳지 않다고 판단
2) 알고리즘 관련 서적, 관련 접근 방법에 대한 영상 등을 통해 알고리즘의 시야를 넓히는게 중요하다고 판단
3) 하루 2문제 씩 풀며 최소한의 메소드 사용방법, 문법 정도만 까먹지 않게 도전
4) 계속 구글링 하던 내용은 한 번 정리해서 다시 보지않게 하기 (내것으로 만들기 -> 시간낭비 X)
3. 학습 계획 재정립
스파르타 내배캠을 2주차 정도 진행하면서 적지 않은 시간이 흘렀고 그 시간만큼 공부했다. 하지만 머리 속에 남는 것이 크게 없다는게 느껴지고 무엇을 공부했는지 정리할 수가 없다. 또한, 중간중간 모르는 내용들이 자꾸 나오는데 어렵다고 대충 공부했던 것 같다.
- 개선 방향
1) CS 관련 지식을 넓히자 -> 하루에 정해진 분량을 정해 꾸준히 학습하기
2) 생각만 하지 말고 이해가 안 가면, 책을 읽고 정리해보기
3) 관련 서적을 적극 활용하기 -> 강의는 키워드, 어떤건지 맥락을 파악하는 것, 책을 통해 내것으로 만들어야!
오랫동안 TIL을 쉬긴했지만 TIL을 써보니 시간 소모가 생각보다 크지만 생각을 정리하는데 많은 도움이 되는 것 같다. TIL을 한 번 코드처럼 잘 정리해보는 습관도 가져야겠다. Java 정말 쉽지 않다. 클래스 이후부터는 잘 이해가지도 않고, 구현도 벅차다. 내가 공부하는 방법이 옳은 건지도 모르겠지만, 실행조차 안하는것보다는 실행하면서 배우는게 더욱 클 것이다. 꾸준히 해야겠다.
내일 할것
1. 개인 과제 3단계 구현
2. 클래스 내용 서적으로 다시 읽어보기
3. 알고리즘 문제해결전략 1 읽어보기
'스파르타(부트캠프) > TIL (Today I Learned)' 카테고리의 다른 글
[내일배움캠프] 스파르타 16일차_24.10.18 (3) | 2024.10.18 |
---|---|
[내일배움캠프] 스파르타 14일차_24.10.16 (2) | 2024.10.16 |
[내일배움캠프] 스파르타 8일차_24.10.10 (4) | 2024.10.10 |
[내일배움캠프] 스파르타 6일차_24.10.07 (7) | 2024.10.07 |
[내일배움캠프] 스파르타 5일차_24.10.04 (5) | 2024.10.04 |