[Spring#39] Spring 팀과제 : NateamStore 프로젝트 구성 / 알고리즘 : 멀리뛰기

김한준 Hanjun Kim·2023년 12월 5일
0

내일배움캠프

목록 보기
40/70

알고리즘

깃허브 링크 :
https://github.com/wkdehf217/codingTest/tree/main/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4/1/133502.%E2%80%85%ED%96%84%EB%B2%84%EA%B1%B0%E2%80%85%EB%A7%8C%EB%93%A4%EA%B8%B0

import java.util.*; //import
class Solution {
    public int solution(int[] ingredient) {
        int answer = 0;
        int index = 0;
        ArrayList<Integer> queue = new ArrayList<>();
        for (int a : ingredient) {
            queue.add(a);
        }
        while(queue.size()>3 && index+3<queue.size()){
            if (queue.get(index) == 1 && queue.get(index+1) == 2 && queue.get(index+2) == 3 && queue.get(index+3) == 1) {
                queue.remove(index);
                queue.remove(index);
                queue.remove(index);
                queue.remove(index);
                answer++;
                index = 0;
            }else{
                index++;
            }
        }
        
        return answer;
    }
}

처음에 List를 활용해서 만든(이름은 queue지만 실상은 리스트인) 깃허브에 있는 코드와 다른 코드이다.

테스트는 통과 하였지만, 효율성 부분에서 실패했다.

아무래도 List의 remove, get 과 index를 사용해서 그런다고 생각한다.

프로그래머스 제출은 다른 사람의 풀이인 배열을 사용해서 푼 코드를 올렸지만, 그래도 문제를 풀었다는 것에 의미를 두려고 한다.


NateamStore 프로젝트 구성

  • 계속 상기하고 있다.
    누구한테 설명할 수 있어야 내 것이라는 말
    끊임없이 반복재생 하려고 한다.
  • 오늘은 팀 프로젝트를 시작하는 날이다.
    기본 베이스는 스팀처럼 게임 판매 하는 사이트를 만들기로 하였다.
    팀원분들 모두 의견이 많고, 분위기가 좋아서 좋은 결과가 나올 것 같다.

  • 프로젝트를 구성하며 여러 문제에 대해 생각 해 보았다.

    • n+1 문제

      • @Query를 사용해서 fetchJoin 을 사용하면 해결 할 수 있다.
      • Entity 그래프 사용하는것도 하나의 방법
      • 검색 ㄱㄱ

    • @Pageble

      • 페이징 기법

    • Jpa Auditing

      • 분명 배웠던 건데..
      • Auditing 을 사용하면 엔티티를 누가 언제 생성/마지막 수정 했는지 자동으로 기록되게 할 수 있다. <- 라는 설명

    • access = Accesslevel.PROTECTED

      • Jpa가 객체를 만들기 위해 보호 레벨 적용(최소 PROTECTED)
      • @Builder를 썼을 때 @AllArgsConstructor(통칭 올아규)가 없으면 빌드가 안되는 문제 같은 경우도 있음

    • @Builder를 사용하는 이유?

    • mybas같은거보다 Jpa를 사용하는 이유?

      • 개발자가 SQL을 직접 치기엔 너무 번거롭고 mybas는 다 쳐야해서

    • 코드컨벤션

    • GenerationType

    • 테스트코드짤때 객체동일성 비교

      • 이 글을 쓴 유저가 맞는지 판단할때 equals
      • 객체동일성 : 인스턴스가 같다 = 진짜 같다
        안에 값이 다른데 인스턴스만 같다 = equals를 오버라이드를 해야한다 ?
  • 객체로 가지고있으면 오해의 소지가 생김
    어? 조회하는건가?

    • 메모리를 사용하는 관점
      =
      객체조회가 필요한지 안 필요한지 먼저 판단 후
      id만 가지고 있게 설계를 함
      객체조회는 지양함
      차라리 sql을 쓰자(select interface가 있음)
      =>
      이것또한 하나의 관점일 뿐
      orm을 쓰는것도 좋다
  • 위 문제들을 검색해서 내용을 정리 한 후 내것으로 만들고 기록하는게 TIL

profile
개발이 하고싶은 개발지망생

0개의 댓글