코딩공부

내일배움캠프 15일차

정해인3 2023. 6. 5. 21:00

오늘은 메모장 만들기 개인과제를 했다. 

 

문제1

입력한 숫자(documentNum)에 해당하는 인덱스가 리스트에 존재하는지 판별하는 코드에서 에러가 났다. 아래는 에러가 난 코드이다.

if(memoList.get(documentNum) == null){
    System.out.println("존재하지 않는 글");
}else {
}

구글링을 해본 후 memoList의 size()를 입력한 숫자와 비교해 입력한 숫자가 size()보다 작은지 여부로 판별하는 것이 좋겠다고 생각을 해서 아래와 같이 수정했다.

if(documentNum >= memoList.size()){
    System.out.println("존재하지 않는 글");
}else {
}

 

문제2

글 하나를 삭제하면 그 뒤의 글들이 번호가 1씩 당겨지게 했는데 실행해 보니 바로 다음 글만 -1이 되었고 그 다음 글들은 번호에 변화가 없었다. 아래는 오류가 난 코드이다. 

memoList.remove(documentNum);
for (int i = documentNum; i < memoList.size(); i++) {
    memoList.get(documentNum).setMemoVONum(documentNum - 1);
}

for문 안에서 documentNum이 들어가야 할 부분을 i로 썼어야 했는데 그러지 않았다는 것을 깨달았다. 또한 리스트의 인덱스와 리스트 내에서 사용하는 번호를 혼동하고 있었다. 아래는 수정한 코드이다.

memoList.remove(documentNum);
for (int i = documentNum; i < memoList.size()+1; i++) {
    memoList.get(i+1).setMemoVONum(i);
}

하지만 이번에는 IndexOutOfBoundsException 에러가 자꾸 발생했다. for문에서 조건부를 i < memoList.size()-1로 바꾸자 해당 에러는 사라졌다. 인덱스 범위를 넘는 get()을 해서 발생한 오류로 보인다. 

삭제한 인덱스부터 적용하던 것을 그냥 처음부터 인덱스를 적용하는 것으로 수정했더니 무리없이 실행이 되었다. 아래는 수정한 코드이다. 

for (int i = 0; i < memoList.size(); i++) {
    memoList.get(i).setMemoVONum(i + 1);
}

LinkedList는 조회에 시간이 오래 걸리기 때문에 처음부터 인덱스를 수정하는 것이나 삭제된 인덱스부터 찾아 인덱스를 수정하는 것이나 크게 차이가 없을 것 같아 위와 같이 수정하기로 하였다.  

 

 

저녁에는 학습법 특강을 들었다.

학습법 특강 메모

  • TIL, WIL, 알고리즘: 꾸준함, 성실함 
  • 개인과제, 팀 과제: 사고력, 구현력
  • 프로젝트: 기술적 의사결정, 고민
  • 개발역량점검표: 실력에 대한 메타인지, 부족한 점 채우기 
  • 눈 앞에 있는 것에 집중
  • 레거시 코드 - 이전 사람들이 작성해 놓은 코드
  • 기술적인 요구사항이 어느 정도 충족되면 그 이후는 자질, 성향을 봄 -> 협업, 기술적인 고민 
  • 기술적인 고민을 잘하려면
    • 로직과 코드에 대한 의도를 생각하기
    • 구현하는 기술, 스택에 목적과 근거 가지기
    • 더 좋은 방법이 있는지 고민하기 
  • 협업을 잘하기 위해 - 옳은 말을 기분 좋게 하기
    • 예쁘게 말하기
    • 전달하고자 하는 바를 명확하게 말하기
    • 데이터 또는 기술적인 근거를 바탕으로 소통하기
  • 원격 강의: 개념과 구조 이해 -> 이해한 부분 직접 구현하기
  • 실시간 강의: 완전히 이해하지 못하더라도 집중해서 듣기 -> 녹화본으로 복습
  • 과제: 배운 내용 복습 및 구현 연습, 완성하지 못했더라도 피드백을 받고 부족한 부분 채우기 
  • 질문과 공유 
  • 집중코딩시간에는 코딩만 
  • 중요한 건 꺾였는데도 그냥 하는 마음