TIL

20240826 본캠프 31일차 TIL

juno0432 2024. 8. 26. 21:10

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

  • 09:00 ~ 10:00 : 코드카타
  • 10:00 ~ 10:10 : 팀 회의
  • 10:10 ~ 11:30 : 과제 개선
  • 11:30 ~ 12:30 : 튜터님 인터뷰
  • 12:30 ~ 13:30 : 점심시간
  • 13:30 ~ 14:00 : 질문
  • 14:00 ~ 15:30 : 과제 개선 및 포스트맨 개선
  • 15:30 ~ 16:00 : 코드 리뷰 및 질문
  • 15:00 ~ 18:00 : 개인과제 개선
  • 18:00 ~ 19:00 : 저녁시간
  • 19:00 ~ 21:00 : 튜터님 인터뷰 및 TIL 작성

조금만 더 버티면 과제 끝!

.


 

오늘 해야할 일 ✔️ 🔺 ❌

✔️ 개인 과제 마무리



햄버거 쌓기

더보기

상수야.. 넌 이것도 혼자서 못하냐..

 

문제 분석

빵 야채 고기 빵 순서로만 포장을한다

1 = 빵 / 2 = 야채 / 3 = 고기 순이다

정답을보니;

[2,1,1,2,3,1,2,3,1] >> 2

이고

2 1 1 2 3 1 2 3 1 > 중간 4개가 햄버거 하나고

2 1 2 3 1 > 이렇게 4개가 햄버거하나라서 총 2개인것같다

2개가 나온다

 

import java.util.*;

class Solution {
    public int solution(int[] ingredient) {
        int answer = 0;
        StringBuilder sb = new StringBuilder();
        
        for(int i : ingredient) {
            sb.append(i);
            if(sb.length() >= 4 && sb.substring(sb.length() - 4).equals("1231")) {
                answer++;
                sb.delete(sb.length() - 4, sb.length());
            }
        }
        
        return answer;
    }
}

 

스트링 빌더를 사용하는 방식을 사용하였다

쌓다가, 패턴이랑 맞으면 카운트하고 지우면된다

 

그리고 다른사람의 풀이를 보니

스택을 쌓더라

하긴... 내가 한 방식도 넣은순서대로 꺼내는거니까 스택의 방식도 되겠구나 싶었다


과제

더보기

 

과제9

권한 인가를 만들기 위해 user에 권한을 구분 해 줄 수 있는

엔티티에 권한을 enum으로 넣었다

 

과제10

 

 

엄청난 고민

일단 restTemplate는 이번 과제로 거의 처음 들어봤다

(다른것도 사실 똑같다)

 

일단 코드스니펫을 옮겨보았다.

 

public List<TaskWeatherDto> getWeather()
{
    URI uri = UriComponentsBuilder
            .fromUriString("대충링크")
            .path("대충링크")
            .encode()
            .build()
            .toUri();

    ResponseEntity<String> responseEntity = restTemplate.getForEntity(uri, String.class);
    return fromJSONtoItems(responseEntity.getBody());
}

 

대충 저런링크를 타고 들어가서 받은 파일을 받아서 날씨를 업로드해야한다

구렇다

 

이거 강의 코드 약간만 수정하면 되겠는데! 싶었지만... 마음만큼은 그렇게 되지 않았다..

 

대충 조회라도 해보려고 get에 넣고 돌려보았다

 

A JSONObject text must begin with '{' at 1 [character 2 line 1]

 

그래도 정상적으로 불러는 오나,

JsonObject형식은 { 이건데 넌 왜 [ 이걸썻냐 이말인거같다

 

https://jinsangjin.tistory.com/15#google_vignette

 

[Java] Json 파싱하기 #JSONArray, JSONObject #json에서 원하는 값 추출

json이 넘어오는 형태는 크게 3가지가 있다. JsonObject : {상진 : 100, 길동 : 200} JsonArray : [ { : }, { : }, { : } ] JsonArray : {"key" = [ { : }, { : }, { : } ] } 경우에 따라 각각의 요소를 어떻게 뽑을 수 있는지 알아

jinsangjin.tistory.com

 

그래서 보니 JsonArray도 있길래 array를 사용하기로 했다

 

for(int i = 0 ; i<weathers.length() ; i++)
{
    JSONObject jsonObject = weathers.getJSONObject(i);
    if(jsonObject.get("date").equals("03-25"))
    {
        System.out.println("이거마따");
    }
}

 

그래서 일단 테스트를 해봤다

당연히 뱉었다.

 

이 내용을 사용해서 쓰면될것같았다

 

음... 다만 for문을 계속 순회한다는게 엄청난 비효율이긴한디

저 api를 저장하고 쓰는게 낫긴한데 일단 요구사항만 지키자!

 

일단 내생각엔

task에 weather을 만들고

service에서 날짜와 맞는 weather만 받아오면 된다!

 

public List<TaskWeatherDto> fromJSONtoItems(String responseEntity) {
    JSONArray weathers  = new JSONArray(responseEntity);

    List<TaskWeatherDto> taskWeatherDtos = new ArrayList<>();

    for(int i = 0 ; i < weathers.length(); i++)
    {
        JSONObject object = weathers.getJSONObject(i);
        taskWeatherDtos.add(new TaskWeatherDto(object));
    }
    return taskWeatherDtos;
}

 

일단 task를 list에 넣었다.

날짜랑 매칭되는 것만 받아오면 될것같다.

 

private String findTodayWeather(List<TaskWeatherDto> taskWeatherDtos)
{
    DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern("MM-dd");

    String date = LocalDate.now().format(dateFormatter);
    String weather = "";

    for(TaskWeatherDto taskWeatherDto : taskWeatherDtos)
    {
        if(taskWeatherDto.getDate().equals(date))
        {
            weather = taskWeatherDto.getWeather();
        }
    }
    return weather;
}

 

생각해보니 dto에서 등록되는 날짜를 찾지 않아되 될거같아서

그리고 findByWeather메서드를 만들어서

오늘 날짜를 입력받아서 매칭되는 날짜를 찾는다

 

 

참고자료

https://kim-jong-hyun.tistory.com/32

 

[JAVA] - JSON 데이터(object, array)를 다뤄보기

2장에서는 JAVA에서 JSON 데이터로 HTTP 통신을 해보는 시간을 가졌는데 이번에는 직접 JSON 데이터를 다뤄보는 시간을 가져보자 JSON 데이터를 다루기 위한 라이브러리와 HTTP통신하는 예제는 아래링

kim-jong-hyun.tistory.com

 

 


jwt와 필터


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