'5월 16일' 스물두 번째 기록 [TIL]

가은·2024년 5월 16일
0

I Learned [본 캠프]

목록 보기
34/135
post-thumbnail

👩‍🏫 오늘의 출석

❓스물두 번째, 9 to 9을 해 본 소감❓

오늘은 개인 과제 하면서 12시간이 아주 후딱 지나갔다. 어제 가볍게 진행해 볼 때는 초기 세팅이 잘 안돼서 오늘은 제대로 잘 시작할 수 있을까 걱정을 많이 했는데 생각보다 별거 아닌 일이어서 조금 머쓱할 지경이었다. 그래도 다행히 오늘 안으로 구현을 끝내서 내일부터는 여유롭게 다시 코드도 좀 보고, Spring 공부도 여유롭게 하나하나 살펴보고 해봐야지.

📑오늘 학습한 내용

🧩오늘의 알고리즘 : 나누어 떨어지는 숫자 배열 🧩

문제 : array의 각 element 중 divisor로 나누어 떨어지는 값을 오름차순으로 정렬한 배열을 반환하는 함수, solution을 작성해주세요.

divisor로 나누어 떨어지는 element가 하나도 없다면 배열에 -1을 담아 반환하세요.

제한사항

  • arr은 자연수를 담은 배열입니다.
  • 정수 i, j에 대해 i ≠ j 이면 arr[i] ≠ arr[j] 입니다.
  • divisor는 자연수입니다.
  • array는 길이 1 이상인 배열입니다
import java.util.*;

class Solution {
    public int[] solution(int[] arr, int divisor) {
    
        ArrayList<Integer> list = new ArrayList<Integer>();//새 ArrayList 선언
        
        for(int a : arr){ //for-each문 순회
            if(a % divisor == 0){
                list.add(a);
            }
        }
        if(list.size() == 0) { //조건에 맞는 요소가 하나도 없다면 -1담은 배열 반환
           int[] noResult = {-1};
            return noResult;
        }
        //순회 후 오름차순 정렬
        Collections.sort(list);
        //ArrayList -> 배열 변환후 반환
        int[] result = list.stream().mapToInt(Integer::intValue).toArray();
        return result;
        
    }
}

if(list.size() == 0)     // divisor로 나누어 떨어지는 element가 하나도 없다면 배열에 -1을 담아 반환

int[] result = list.stream()      // 리스트로부터 스트림을 생성
                     .mapToInt(Integer::intValue)     // 각 Integer를 int 값으로 매핑
                     .toArray();        // 결과를 int 배열로 수집

List를 받아 스트림으로 변환한 뒤, 각 Integer를 기본형 int로 변환하고, 이 int 값들을 int[] 배열로 수집

🧩 오늘의 SQL : 고양이와 개는 몇 마리 있을까 🧩

문제 : 동물 보호소에 들어온 동물 중 고양이와 개가 각각 몇 마리인지 조회하는 SQL문을 작성해주세요. 이때 고양이를 개보다 먼저 조회해주세요.

SELECT ANIMAL_TYPE, COUNT(*) AS COUNT
FROM ANIMAL_INS
GROUP BY ANIMAL_TYPE
ORDER BY ANIMAL_TYPE

❣️ Spring 입문 주차 개인 과제

🗓️ 나만의 일정 관리 앱 서버 만들기 🗓️

✔️ 공통 조건

  • Entity를 그대로 반환하지 말고, DTO에 담아서 반환해주세요!
  1. 일정 작성, 수정, 조회 시 반환 받은 일정 정보에 비밀번호는 제외 되어있습니다.

  2. 일정 수정, 삭제 시 선택한 일정의 비밀번호와 요청할 때 함께 보낸 비밀번호가 일치할 경우에만 가능합니다.


✔️ 첫 번째 요구사항

  • 1단계 : 일정 작성
    조건 : 할일 제목, 할일 내용, 담당자, 비밀번호, 작성일을 저장할 수 있습니다.
    - 저장된 일정 정보를 반환 받아 확인할 수 있습니다.



✔️ 두 번째 요구사항

  • 2단계 : 선택한 일정 조회
    조건 : 선택한 일정의 정보를 조회할 수 있습니다.



✔️ 세 번째 요구사항

  • 3단계 : 일정 목록 조회
    조건 : 등록된 일정 전체를 조회할 수 있습니다.
            조회된 일정 목록은 작성일 기준 내림차순으로 정렬 되어있습니다.



✔️ 네 번째 요구사항

  • 4단계 : 선택한 일정 수정
    조건 : 수정된 일정의 정보를 반환 받아 확인할 수 있습니다.
            선택한 일정의 할일 제목, 할일 내용, 담당자을 수정할 수 있습니다.
    • 서버에 일정 수정을 요청할 때 비밀번호를 함께 전달합니다.



✔️ 다섯 번째 요구사항

  • 5단계 : 선택한 일정 삭제
    조건 : 선택한 일정을 삭제할 수 있습니다.
    - 서버에 일정 삭제를 요청할 때 비밀번호를 함께 전달합니다.


기본 단계, 요구 사항 구현 완료

API 명세서

  • API 명세서를 작성하기 위해 API 생성 도구를 여러 가지 알아보다가 GitBook과 postman, Swagger를 가장 많이 사용하는 것 같았다. 직관적이고 깔끔한 UI를 가지고 있는 GitBook과 postman 중 고민을 하다가 GitBook이 GitHub와 연동도 가능하고 postman으로 API를 만드는 방법보단 좀 더 자세하게 작성 방법이 나와 있는 것 같아 가입까지 하고 API 명세서를 만들려고 하는데 GitBook이 자꾸 문제가 발생했다고 그러고, 직접 작성하려니 도대체 어떻게 하라는 건지 잘 모르겠기에 결국 postman으로 넘어왔다.
    사실 postman으로 하긴 했는데 자세하게 A-Z까지 설명이 나와 있는 곳이 없어 대충 내 감으로 작성했다. 작성을 하면서 '이게 맞나?' 싶다가도 URL까지 잘 만들어서 '오! 됐다!' 하고 좋아했는데 왜,, 링크 타고 들어가서 보면 Example Response가 안 뜨지? 분명 확인 다 하고 만들었는데…. 왜지? 내일 튜터님께 여쭤보러 가야겠다.

ERD와 Use Case Diagram까지 만들고 나니 하루가 금방 간다. 그런데 간단한 CRUD만 구현해서 그런가 뭔가 좀 엉성한 느낌이 든다. 이 부분도 내일 튜터님께 여쭤보거나 과제 제출 후 피드백 받아 수정해야 할 것 같다.

0개의 댓글