🍀 좋았던 점
DB 팀플 끝
이번 주 월요일은 DB 팀플 결과물을 발표하는 시간이었습니다.
다른 팀의 DB 설계를 살펴보면서 "이런 설계가 더 좋네? 앞으로는 이렇게 해야지"라는 생각도 들었고, 발표를 들으면서 진짜 발표를 잘하시는 분들이 많다고 느꼈습니다.
개인적으로 느낀 것은 모든 기능을 다 나열해서 보여주는 것보다, 확실하게 보여주고 싶은 포인트를 정해서 그 기능을 중점적으로 보여주는 게 발표를 듣는 사람 입장에서 더 이해하기 쉽고 흥미가 생겼던 것 같습니다.
다음에 혹시 발표를 하게 되거나 같은 팀원분의 발표를 피드백 해줄 수 있는 기회가 있다면, 이 프로젝트를 전혀 모르는 사람에게 설명한다는 것을 꼭 기억하면서 발표를 준비하거나 피드백 해줘야겠다는 생각을 했습니다.
시험을 잘 봄
어쩌다 시험을 잘봐서 상품으로 커피 쿠폰을 받았습니다,,, 🙇🏻♂️
강사님께서도 스벅 쿠폰에 짧은 카드까지 써주셔서 너무 감사했습니다.. 🥹
지금까지는 한번 공부했던 내용들이 대부분이서 복습하는 시간이 많이 필요하지 않았는데, 뒤로 갈수록 처음 공부하는 내용들이 나오니까 초심 잃지말고 열심히 복습해야겠다고 생각했습니다.
😢 부족한 점
도파민 중독 😵💫
이번 주에 폰을 왜케 많이 봤는지,,,
디프만 활동이 본격적으로 시작돼서 평일 저녁에 꽤 긴 시간 회의를 하다보니 몸이 적응하기가 힘들었는지, 이번 주에 훅 피곤하다고 느낀 때가 있었습니다.
왜인지 피곤하면 자꾸 유투브, 인스타 같은 도파민을 주체할 수 없이 자꾸 찾게 된다고 느낍니다.
(도파민네이션에선 고통이 크면 고통-쾌락의 저울을 맞추기 위해 도파민을 찾게 된다고 하는데, 피곤해서 고통스러워서 그런 걸까요)
바빠짐 -> 시간을 아껴 써야 한다는 심리적 부담감 -> 쉬면 죄책감(?) 들어서 못 쉼 -> 피곤해짐 -> 피곤해서 효율도 떨어지고 자꾸 유투브 보게 됨 -> 결과적으로 시간 낭비
이번 주는 이런 악순환을 밟게된 것 같아 좀 아쉽습니다.
📖 배운 점
이번주는 자바의 기초적인 문법에 대해 배웠는데, String과 관련한 다양한 메소드에 대해서 배우는 시간이 유익했던 것 같습니다.
StringBuffer와 StringBuilder
둘 중 누가 thread-safe이고, 누가 thread-unsafe이었지 헷갈렸는데, 수업을 들으면서 StringBuffer가 thread-safe, StringBuilder가 thread-unsafe이라는 것을 알게 되었습니다.
그리고 알고리즘 문제 풀때 StringBuilder를 쓰면 append() 메소드 정도만 활용했었는데, insert(), delete() 메소드의 존재도 알게 되었습니다.
- insert 메소드: StringBuilder의 인덱스(첫번째 인자)번째에 문자열(두번째 인자) 끼워넣기
sb.insert(인덱스, 문자열); sb.insert(5, "python");
- delete 메소드: 첫번째 인자 ~ (두번째 인자 - 1) 만큼 문자열 삭제
sb.delete(인덱스1, 인덱스2); sb.delete(17, sb1.length());
strip() 메소드
trim() 메소드는 있다는 것을 알고 있었는데, 문자열 양옆의 공백을 제거하는 메소드 중 strip() 메소드가 있다는 것도 알게 되었습니다.
join() 메소드
String 배열을 한번에 concat해서 하나의 String으로 만드는 메소드가 있다는 것을 알게 되었습니다.
String[] sArr = {"java", "python", "C++", "javascript"};
st = String.join(" ", sArr); // 결과: "java python C++ javascript"
문자열의 대소문자 (문자열1.equalsIgnoreCase(문자열2), 문자열.toUpperCase(), 문자열.toLowerCase())
알고리즘 문제 풀 때 가끔 "대소문자를 무시하고 비교하라"는 조건이 나올 때가 있는데, 그 때마다 메소드 이름이 기억이 안나서 찾아봤습니다.
그런데 이제 수업 들으면서 equalsIgnoreCase(), toUpperCase(), toLowerCase()에 대해 배웠으니까, 꼭 기억해서 레퍼런스 보지 않고 문제를 풀어야겠다고 생각했습니다.
안까먹을 수 있을까...
정규식과 matches(), Patterens.matches() 메소드
많이 쓰이는 정규식에 대해 배울 수 있었습니다.
물론 복잡한 정규식은 나중에 gpt한테 물어보겠지만, 간단한 정규식을 어느정도 읽을 줄 알고 이해할 수 있어야한다고 생각해서 유익했던 것 같습니다.
//== matches와 Pattern.matches() ==//
String test = "helloA";
System.out.println(test.matches("[A-Za-z]+")); // 영문자로만 이뤄져있는지. true
boolean b1 = Pattern.matches("[0-9]+", "12345hello"); // 숫자로만 이뤄져 있는지. false
System.out.println(b1);
// 전화번호 포맷 검증
boolean b2 = Pattern.matches("^\\d{3}-\\d{4}-\\d{4}$", number);
// 이메일 포맷 검증
boolean b3 = Pattern.matches("^[a-z0-9]+@[a-z]+.com$", email);
기본 자료형 역순 정렬하기 with stream
참조 자료형은 Comparator 객체를 이용하거나 Comparable을 구현하면 원하는 기준으로 정렬하는게 비교적 쉬운데, 기본자료형은 좀 어렵다고 느꼈습니다. (ex. 역순 정렬)
그런데 수업시간에 stream으로 역순 정렬하는 방법을 배워서 좋았습니다. (Integer로 변환 후 정렬하고 다시 int로 변환)
저는 사실 아직 stream을 쓰는데 익숙치 않은데 빨리 익숙해져야겠습니다.
// 방법 2. stream api와 lambda를 활용한 내림차순 정렬
int[] answer = Arrays.stream(intArr) // intArr을 대상으로 stream 객체 생성. stream이라는 것은 int 배열의 복사본이라고 보면 된다.
.boxed() // int 요소를 Integer로 형변환 시키는 메소드
.sorted(Comparator.reverseOrder())
.mapToInt(a -> a) // Integer를 다시 int로 형변환
.toArray(); // 배열로 변환
문자열 꿀팁(?)
중간에 공백 여러게 있을 때, 잘라서 String 배열로 만들기 -> 공백을 나타내는 이스케이프시퀀스 \s 뒤에 + 붙여주면 해결!("\s+")
String b = "a b c d"; String[] bArr = b.split("\\s+");
🌱 개선할 점
피곤하지 않게 잠 많이 자기!
뭔갈 더 많이 하고 싶어서 늦게 자면 결과적으로 능률이 떨어져서 더 안좋은 것 같습니다.
잠자는 시간을 더 앞당겨야겠다고 생각했습니다.
오늘은 10시 반에 자는 것에 도전해보겠습니다..!
1일 1 알고리즘 하기!
요즘은 수업시간 틈틈이 풀어서 1일 1문제를 할 수 있었는데 앞으로는 점점 풀시간이 없어질 것 같습니다.
아무리 바빠져도 포기하지 않고 하루에 한문제는 해결해야겠다고 생각했습니다.
'기록 > Beyond SW' 카테고리의 다른 글
Beyond SW 7기 6주차 회고록 (2) | 2024.06.24 |
---|---|
Beyond SW 7기 5주차 회고록 (4) | 2024.06.18 |
Beyond SW 7기 3주차 회고록 (7) | 2024.06.02 |
Beyond SW 7기 2주차 회고록 (8) | 2024.05.26 |
Beyond SW 7기 1주차 회고록 (4) | 2024.05.19 |