2023.07.12.수.TIL

heeh·2023년 7월 12일

TIL

목록 보기
41/82
post-thumbnail

2023.07.12.수

페어프로그래밍

class Solution {
        public int[][] solution(int[] num_list, int n) {
            int[][] answer = new int[num_list.length / n][n]; // [num_list.length / n] -> 행의 갯수 계산 / num_list.length는 num_list 배열의 길이 / n은 열의 개수
            // 2차원 배열 생성

            for (int i = 0; i < num_list.length / n; i++) { // n = 2 경우, 총 4 번돌고
                // 외부 반복문 i는 행을 표현
                
                for (int j = 0; j < n; j++) { // n = 2 경우, 총 8 번돈다
                    // 내부 반복문 j는 열을 표현
                    answer[i][j] = num_list[i*n+j]; // n가 행의 위치를 나타냄
                    // [j+i*n]
                    // [0*2+0 = 0] = 1
                    // [0*2+1 = 1] = 2

                    // [1*2+0 = 2] = 3
                    // [1*2+1 = 3] = 4

                    // [2*2+0 = 4] = 5
                    // [2*2+1 = 5] = 6

                    // [3*2+0 = 6] = 7
                    // [3*2+1 = 7] = 8

                    // 각 2줄씩 = 열 / 총 4줄 = 행 / 배열(총 개수)은 8

                    // [0*3+0 = 0] = 1
                    // [0*3+1 = 1] = 2
                    // [0*3+2 = 2] = 3

                    // [1*3+0 = 3] = 4
                    // [1*3+1 = 4] = 5
                    // [1*3+2 = 5] = 6

                    // [2*3+0 = 6] = 7
                    // [2*3+1 = 7] = 8
                    // [2*3+2 = 8] = 9

                    // 각 3줄씩 = 열 / 총 3줄 = 행 / 배열(총 개수)은 9
                }
            }

            return answer;
        }
    }
  • answer 배열 생성
    • num_list 배열의 길이를 n으로 나눈 값으로 행의 개수를 계산
    • num_list.length / n 개의 행과 n 개의 열
      • um_list.lengthnum_list 배열의 길이
      • n은 열의 개수
      • 따라서 num_list.length / n은 행의 개수
  • 이중 반복문을 사용하여 answer 배열에 값을 할당
    • 외부 반복문(i) : 행
    • 내부 반복문(j) : 열
  • n = 2 배열의 길이는 8이라면?
    • num_list.length / n을 계산하면 행의 개수

    • answer 배열은 8을 2로 나눈 값인 3개의 행

    • 최종적으로 num_list 배열이 2개의 열을 가진 2차원 배열로 변환

      [[1, 2],
       [3, 4],
       [5, 6],
       [7, 8]]
  • n = 3 배열의 길이는 9라면?
    [[1, 2, 3],
     [4, 5, 6],
     [7, 8, 9]]
  • 왜 n을 곱해줘야 하는지…?
    • 위치와 관련…?
  • 다른 조 페어프로그래밍
    • String.valueOf(num1) : num1을 int에서 Stirng으로 변환
    • arr : arrlist?
    • char[] = {’1’,’0’}
    • char a = Integer.toSrting(num3).charAt(0)
      → int 였던 num3를 toString으로 변환! 그러기 위해서 int의 래퍼타입 Integer을 이용해서 계산
      → 그리고 또 charAt으로 바꿔줘야?
    • k=1
      • charAt = int 1 = char ‘1’
    • 문자형 배열로 변환한 i 배열이랑 charAt()으로 변환한 k(char a) 랑 비교해서 같은게 있을 때마다 ++가 되는 것
  • 다음 https://school.programmers.co.kr/learn/courses/30/lessons/120890 ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ https://school.programmers.co.kr/learn/courses/30/lessons/120835

밥4조 코드 리뷰

  • LinkedList : 배열이긴 하지만 다른 느낌의 배열이고 읽는 속도가 느리지만 삭제, 수정에 용이하다!
  • @JoinColumn : SQL 연결
  • @JsonProperty : spotipy(외부)에서 받아오는 데이터에 대해서 Json 형식으로 다루는?
    • Json 파일 복잡함!
  • security
    • security가 없다면 UserController에 관련된 코드를 모두 적어줬어야 합니다
    • JWT(1개), filter(2개)에 연결해서 보안에 사용
  • 회원 관련 Class
    • Config
    • UserController
    • JWT
    • Jwt~Filter
    • Jwt~Filter
  • valid
    • 제약조건?
  • 정규식
    • 아이디는 3~16자의 영문 대소문자, 숫자, 특수문자… 조건에 맞는 식
    • 공부하거나 외우는 것이 아닌…!
  • Optional
    • 따로 공부 추천
    • 예 / 아니오 느낌
  • Role : 관리자 관련
  • Entity 모습으로 Table이 만들어지기 때문에 Repository에 넘길 때는 Entity를 적어줘야 함
  • extends JpaRepository < ? , ? > 기본적 메서드 확인!!
    • 거의 id or Entity
  • @RestController와 @Controller의 차이점
    • Controller의 반환이 거의 String
      → view가 있으니까 사용되는!
    • RestController의 반환은 거의 ResponseDto
  • @Slf4j : log 찍어주는 기능
    • log에 info 등 정보를 적어주고 확인하려고!
  • @RequiredArgsConstructor
    • 생성자 자동으로 대입
    • @RequiredArgsConstructor을 쓰기 보다 this. 생성자를 직접 적어야 의존성 주입 활용 더 좋음..?
  • @RequestMapping : 들어갈 링크의 공통적으로 들어가는 링크 부분
    (http://localhost:9090는 기본이라서 제외)
    - HomController에는 @RequestMapping 없음
    → PostContoller와 분리하는 느낌
  • @AuthenticationPrincipal
    • 인증정책
    • UserDetailsImpl implements UserDetails과 관련
  • Model model … 설명을…! 나중에!?
  • update : Repository 안에 있는 메서드를 사용하지 않는 이유?!
    → 강의에 있음!
    → 트랜잭셔널, 1차 캐시와 관련
  • 면접 단골 질문 : 업데이트에서 트랜잭셔널을 사용하는 역할

공부

  • 모르겠어요 -예고장-
    @Transactional
        public ProductResponseDto updateProduct(Long id, ProductMypriceRequestDto requestDto) {
            int myprice = requestDto.getMyprice();
            if(myprice < MIN_MY_PRICE) {
                throw new IllegalArgumentException("유효하지 않은 관심 과격입니다. 최소 " + MIN_MY_PRICE +  "원 이상으로 설정해주세요.");
            }
    
            Product product = productRepository.findById(id).orElseThrow(() -> new NullPointerException("해당 상품을 찾을 수 없습니다."));
    
            product.update(requestDto);
    
            return new ProductResponseDto(product);
    • 왜 return에 new를 넣어 주는 건가요?
      • 메서드 안에 new로 ProductResponseDto를 생성해주지 않아서 입니다~
    • 메서드 안에 new로 생성해주면 return에 안 적어도 되는 건가요?
      • 그.럿.읍.니.다
  • 현웅튜터님이
  • 의존성 시켜주는 이유 : 인스턴스화(소스 코드 중복) 줄이기 위해!
    • private final ~
  • @Service : 이 Class가 Service라는 것을 JPA에게 알려준다
  • @Conpornent : bean으로 쓰겠다
profile
공부하자개발하자으쌰으쌰

0개의 댓글