본문 바로가기

분류 전체보기

(261)
소수 만들기 / 프로그래머스 접근방법특정 길이의 리스트에서 3가지의 수를 뽑는 모든 경우의 수 구하기백트래킹첫 번째 숫자를 고정하고,두 번째 숫자를 첫 번째 숫자 이후의 값 중에서 선택,세 번째 숫자를 두 번째 숫자 이후의 값 중에서 선택하여,모든 경우의 수를 탐색하는 방식으로 구현소수를 구할 때는 범위를 √n까지만 확인하면 된다!def is_prime(n): if n  정답import itertoolsdef solution(nums): answer = 0 num = list(itertools.combinations(nums, 3)) for i in num: isPrime = 0 k = sum(i) for j in range(2, k): if k % j ..
모의고사 / 프로그래머스 첫번째 시도인덱스를 초기화하는 부분에서 문제 발생 -> 나머지 연산자로 해결def solution(answers): sol1 = [1, 2, 3, 4, 5] sol2 = [2, 1, 2, 3, 2, 4, 2, 5] sol3 = [3, 3, 1, 1, 2, 2, 4, 4, 5, 5] idx1 = 0 idx2 = 0 idx3 = 0 cnt = {1:0, 2:0, 3:0} for i in answers: if idx1  정답나머지연산자로 인덱스 구현def solution(answers): sol1 = [1, 2, 3, 4, 5] sol2 = [2, 1, 2, 3, 2, 4, 2, 5] sol3 = [3, 3, 1, 1, 2, 2, 4, 4..
N + 1 문제와 해결 방법 N + 1 문제연관관계가 설정된 엔티티를 조회할 경우에 조회된 데이터 갯수만큼 연관관계의 조회 쿼리가 추가로 발생하는 것연관된 데이터를 조회할 때 비효율적인 쿼리가 발생하는 문제만약 주인은 3명이 있고, 고양이는 9마리가 있다고 하자주인 1명당 고양이를 3마리씩 소유하고 있음이때 주인 엔티티를 조회하게 되면 쿼리는 총 4번 날라가게 된다!SELECT * FROM Owner; → 회원 3명을 조회하는 1번의 쿼리SELECT * FROM Cat WHERE owner_id = ?; → 각 회원마다 고양이를 조회하는 3번의 쿼리 해결방법이렇게 여러번의 select 쿼리가 날라가지 않게 하기 위해서는 join쿼리를 날리고 싶기 마련이다select * from owner left join cat on cat.own..
과일장수 / 프로그래머스 정답역순 슬라이싱 : score[-1 : -1-m : -1] 혹은 score[-m:], 첫번째는 데이터가 반대로 흘러가서 역방향으로 조회됨리스트에서 해당 범위를 삭제 : del a[start:end]def solution(k, m, score): score.sort() # 오름차순 정렬 ans = 0 while len(score) >= m: s = score[-m:] del score[-m:] ans = ans + s[0] * m return ans
AOP를 이용하여 API 로깅하기 (RequestBody, ResponseBody) AOP관점 지향 프로그래밍반복되고 공통적으로 사용되는 부분을 분리부가적인 기능을 핵심 로직으로부터 분리하여 핵심로직은 오로지 자신에게만 집중할 수 있음 발생한 문제 : NPELogAspect를 모두 작성하고 실행하려고 하는데 NullPointerException이 발생했다Caused by: java.lang.NullPointerException: null 첫 번째 시도 : HttpServletRequest 수정HttpServletRequest를 불러오는 부분에서 문제가 있었나 싶어서 해당 부분을 인텔리제이가 추천하는 코드로 변경했다 변경 전HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttri..
에러메시지를 Enum Class에 담아 코드 개선하기 문제 : 에러 메시지가 코드에 직접 작성됨다양한 경우의 수의 에러 메시지가 비지니스 코드 내에서 직접 작성되어있기 때문에, 어떤 에러 메시지가 있는지 한눈에 알아보기 힘듦 @Transactional public SignupResponse signup(SignupRequest signupRequest) { if (userRepository.existsByEmail(signupRequest.getEmail())) { throw new InvalidRequestException("이미 존재하는 이메일입니다."); } public SigninResponse signin(SigninRequest signinRequest) { User user = us..
Spring MVC의 구조와 HttpMessageConverter의 역할 HttpMessageConverter@RequestBody, @ResponseBody 을 사용할때 사용됨 → 요청이나 응답 모두에 사용된다는 의미요청시에는 Argument Resolver가 사용응답시에는 ReturnValueHandler가 사용JSON을 객체로 변환하는데는 Jackson 라이브러리 사용 (@JsonFormat, Deserializer) HttpMessageConverter 우선순위ByteArrayHttpMessageConverter : byte[] Data를 처리StringHttpMessageConverter : String Data를 처리MappingJackson2HttpMessageConverter : JSON Data를 처리 HttpMessageConverter 동작 순서읽기클라이언..
카드 뭉치 / 프로그래머스 첫 번째 시도 IndexError: list index out of range 직면cards1 또는 cards2가 빈 리스트인 경우에 cards1[0]처럼 참조하면 오류가 나기 때문임cards1[0]과 같이 참조하기 전에 길이를 먼저 체크하도록 변경해야 함def solution(cards1, cards2, goal): answer = "Yes" while(len(cards1) or len(cards2)): if len(goal) == 0: break elif cards1[0] == goal[0] and len(cards1) > 0: cards1.pop(0) goal.pop(0) elif cards2..