주노 님의 블로그

20240802 본캠프 15일차 TIL 본문

TIL

20240802 본캠프 15일차 TIL

juno0432 2024. 8. 3. 14:41

본캠프 15일차 내용 간단요약

  • 09:00 ~ 10:00 : 코드카타
  • 10:00 ~ 12:00 : 뼈대 마무리
  • 12:00 ~ 13:00 : 점심시간
  • 13:00 ~ 14:00 : 회의
  • 14:00 ~ 18:00 : 프로젝트 구현
  • 18:00 ~ 19:00 : 저녁시간
  • 19:00 ~ 20:00 : 복습
  • 20:00 ~ 21:00 : TIL작성 

오늘 해야할 일✔️ 🔺 ❌

✔️ 수강생 정보 등록

✔️ 수강생 삭제

✔️ 수강생 상태별 필수과목의 평균 등급 조회

❌  오늘 코드카타.

 


코드카타

더보기
import java.util.*;

class Solution {
    public int[] solution(int k, int[] score) {
        int[] answer = new int[score.length];
        ArrayList<Integer> list = new ArrayList<>();
        int index = 0;

        for (int i = 0; i < Math.min(k, score.length); i++) {
            list.add(score[i]);
        }
        
        Collections.sort(list);
        
        for (int i = 0; i < Math.min(k, score.length); i++) {
            answer[index++] = list.get(0);
        }
        
        for (int i = k; i < score.length; i++) {
            if (score[i] > list.get(0)) {
                list.remove(0);
                list.add(score[i]);
                Collections.sort(list);
            }
            answer[index++] = list.get(0); 
        }
        
        return answer;
    }
}

 

문제점을 모르겠다

k값이 length보다 클경우를 가정해서 MathMin도 넣었고

최소값도 빼면서 넣었는데 자꾸 틀리네

내일은 답을 보면서 분석해보기로..

 

튜터님께 물어봤는데 같은 값이 들어왔을때의 로직을 고려해보라고 하셨다

테스트케이스도 그렇게 만들어 테스트 해보라고 하셔서 한번 해보기로 했다

테스트 케이스도 커스텀을 할 수 있다니..!


뼈대 만들기 및 점심 회의

더보기

뼈대를 만들어서 테스트 했다

최소한의 뼈대를 만들어야 

그리고 팀원분들이랑 회의했음

 

일단 정보등록이랑 점수 등록을 해야지 나머지 기능 구현이 가능할것같아

3시간안에 두가지 기능구현을 하기로 함

 

근데 은근 등록이 이리저리 많이 엮여서 시간이 좀 소요됐다

 

그리고 팀원분들께 전달해줬다

급하게 만든다고 주석같은거 많이 안달아놨는데

팀원분들중 한분이 이해하기 어려워 하셨다

 

이해하기 쉽게 주말에 주석이랑 설명을 더 추가해야할것 같다!

 

그리고 은근 기능의 이름이 길어서

예를들면 수강생 상태별 필수과목의 평균 등급 조회..

이런거 어떻게짜야할지 물어보니까 줄임말보단 그래도 길어도 메서드명을보고 해석 할 수 있는게 낫다고 하셨다


협업중 생긴 문제

더보기

맥쪽에서 commit을 하면 자꾸 변경사항에 jdk버전 관련 오류가뜨는것이다

그래서 구글링을 해봤는데

티스토리에서 gitignore에 .idea를 담으면 된대서 담았는데

프로젝트가 아예 터지는 상황 발생했다

 

다행히 pull request로 등록해놔서 revert 가능했다

그냥 merge했으면 이거 되돌릴수도 없었을것같아서 살짝 무서웠다

 


다음 회의에 물어볼 내용

더보기

1. 루프문 마지막에 Thread.sleep(1000)을 한다

 

지금은 입력이

id : 1, 과목명 : java, 필수 / 선택 : 필수
id : 2, 과목명 : 객체지향, 필수 / 선택 : 필수
id : 3, 과목명 : SPRING, 필수 / 선택 : 필수
id : 4, 과목명 : JPA, 필수 / 선택 : 필수
id : 5, 과목명 : MYSQL, 필수 / 선택 : 필수
id : 6, 과목명 : 디자인 패턴, 필수 / 선택 : 선택
id : 7, 과목명 : SPRING SECURITY, 필수 / 선택 : 선택
id : 8, 과목명 : REDIS, 필수 / 선택 : 선택
id : 9, 과목명 : MONGODB, 필수 / 선택 : 선택

이렇게 뜬다

 

그러면 내가 입력한걸 보기전에 CUI에서 사라져버리는 문제가 있음

은근 귀찮다는거지

그래서 월요일날 팀원분들께 쓰레드 슬립 1000정도를 해도되나 질문해보기

 

2. 테스트용 더미데이터 생성

테스트용 더미데이터를 생성하는것에 대해 어떻게 생각하는지..

 

3.리팩토링

메인문이 엄청 길~~~~~~~~~다,....

이걸 메서드로 분리해야할지 일딴 만들어보긴 해야지

반대하면 폐기하는거고..!


과제하는중에 발생한 문제!

더보기

상태별 필수과목의 평균 등급을 조회하기

참 까다로워 보였다

상태 입력받으면

필수과목인지 판별하고 학생의 성적을 뽑아내서 평균을 내서 등급을 내고

출력하는...

 

그래도 생각보다 구현이 괜찮았다

public void getAverageGradeByStudentState(String state) {
    StudentStatus status = StudentStatus.valueOf(state);
    List<Student> students = studentControl.getStudentByStatus(status);

    for (Student student : students) {
        int sumScore = 0;
        int sumEssentialSubjects = 0;
        for (Subject subject : student.getSubjects()) {
            if (subject.getType().equals("필수")) {
                for (Score score : scores) {
                    if (score.getSubjectId() == subject.getId()) {
                        sumScore += score.getScore();
                        sumEssentialSubjects++;
                    }
                }
            }
        }
        int averageScore = sumScore / sumEssentialSubjects;
        char grade = calculateGrade(averageScore, "필수");
        System.out.println(student.getName() + "학생의의 필수과목 평균 " + grade);
    }

    System.out.println();
}

 

이렇게 작성을했다

학생 객체를 돌면서 subject를  돌면서 필수인과목만 돌면서 점수를 계산해서 평균점수를 계산하는것이었는데

자꾸 lee 99점 park 60점을 했음에도 a등급으로 고정되는것이다

 

그래서 혹시 안쪽 for문이 subject를 돌아서 학생의 성적이아니라 그냥 전체 성적을 받아오는건가 싶어서

if문을 추가했다

 

if (score.getSubjectId() == subject.getId() && score.getStudentId() == student.getId()) {

student 검증 로직까지 넣었다

그러니 됐다!

 

 

 

BRANCH를 나눠도 BRANCH를 옮기면 그대로 유지되는거지?

DEV 브랜치에서 따른 브랜치를 파서 작성하고, 다시 DEV로 잠깐 넘어가면 작성 내역이 공유가된다

그러고보니 인프런에서 배웠던 내용이 생각난다

지금 잠깐 작업내용을 밀어두기 GIT STASH를 사용하면 된다


과제 진행상황

더보기

0802

✔️ 수강생 등록

✔️ 수강생 점수 등록

✔️ 상태별 수강생 목록 조회

 

0803

✔️수강생 과목별 회차 점수 수정

✔️수강생 삭제

✔️수강생 상태별 필수과목의 평균 등급 조회


오늘의 회고 & 12시간 몰입했는가?

살짝 딴짓한것 빼고는 그럭저럭 풀로 몰입한것 같다


찾아볼 내용

'TIL' 카테고리의 다른 글

20240806 본캠프 17일차 TIL (추가추가추가해야함)  (0) 2024.08.07
20240805 본캠프 16일차 TIL  (0) 2024.08.06
20240801 본캠프 14일차 TIL  (0) 2024.08.01
20240731 본캠프 13일차 TIL  (0) 2024.07.31
20240730 본캠프 12일차 TIL  (0) 2024.07.30