본문 바로가기

분류 전체보기

(282)
과일장수 / 프로그래머스 정답역순 슬라이싱 : 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..
2016년 / 프로그래머스 정답시작하는 날을 기준으로 요일 배열을 나열경과일을 기준으로 요일을 적용해야 하므로 (배열은 0부터 시작하니까) 경과일에 -1을 빼줘야 함def solution(a, b): # 2016년 각 월의 일 수 month = [0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31] # 2016년 1월 1일은 금요일 (FRI) week = ["FRI", "SAT", "SUN", "MON", "TUE", "WED", "THU"] # 1월 1일은 금요일, 1월 1일을 입력했다면 1월 1일로부터 경과일은 0일임 elapsed_date = sum(month[:a]) + b - 1 return week[elapsed_date % 7]
NewsFeed 프로젝트 : 친구 관리 기능 트러블 슈팅 친구 관리 기능 관련 ERD역방향 친구 신청 등록을 방지하기 위해서 친구 요청을 보내게 되면 정방향으로 1번 역방향으로 1번 쿼리가 insert됨1. 정방향 데이터 추가 : A가 B한테 친구신청을 보내서, from_id : a, to_id : b, is_friend : True를 insert2. 역방향 데이터 추가 : from_id : b, to_id : a, is_friend : False를 insert 문제 : 의도하지 않은 inner join 수행 결과값친구 신청한 목록을 조회하기 위해서 friend 테이블에 inner join을 수행했는데, 중복컬럼이 반복해서 나오게 됨1번은 지금 2번과 3번에게 친구 신청을 보낸 상태 inner join을 사용하여 정방향 역방향을 합쳐서 데이터 조회를 수행함se..
명예의 전당 (1) / 프로그래머스 정답프로그램 시작 초기 k일 까지는 명예의 전당에서 가장 작은 값을 ans에 추가k일 이후에는 명예의 전당의 가장 작은 수보다 등록되는 점수가 더 크다면 가장 작은 수를 제외하고 새 점수를 명예의 전당에 등록한 후 명예의 전당 최솟값을 ans에 추가def solution(k, score): best = score[:k] m = [] ans = [] new_score = score[k:] # 프로그램 시작 이후 초기 k일 for i in best: m.append(i) m.sort(reverse=True) # 내림차순 정렬 ans.append(m[-1]) # k일 이후 for i in new_score: best...