본문 바로가기

Today/Study37

23/12/13 예전 뉴스피드 프로젝트중 공통 예외 처리를 이런방식으로 직접 서비스단에서 HttpStatus,메세지를 적어서 넘겨주고,공통 ExceptionResponse를 사용 안해서 컨트롤쪽에서 일일이 trt,catch문으로 해서 코드만 길어지는 문제가 있었다. 그래서 enum으로 하고 공통 ExceptionResponse 사용 하는 방법도 있다. enum으로 하는 방식 1. 먼저 enum클래스를 생성후 각 상수에 int형 상태코드랑 반환할 메세지 적는다. 2. 예외 클래스를 만든다.(현재 캡처는 비니지스,커스텀 예외 추가중) 예외 클래스 생성자에서 enum클래스를 받는다. super부분이랑 this.status는 받은 enum클래스의 정보에 해당 상수값 가져온다 3. 글로벌 예외 핸들러 생성한다. httpStatu.. 2023. 12. 13.
23/12/12 프로그래머스 옹알이 (2) 문제 def solution(babbling): answer = 0 possi=["aya", "ye", "woo", "ma"] for i in babbling: for k in possi: if k*2 not in i: i = i.replace(k," ") if len(i.strip()) == 0: answer+=1 return answer 맨처음에 product 사용 해야겠다 생각 나서 복잡하게 접근하고 해봤지만 실패하고 알고보니 그냥 replace를 이용하는 문제 였다. 2023. 12. 12.
23/12/08 이번 팀프로젝트에서는 지금까지와 다르게 여러 규칙을 많이 정했는데 그중 메소드 길이 15줄 이상 일시 따로 메소드로 빼는 부분이 힘들지만 다 하고 나면 좋아 보이긴한다. 만약 메소드에서 따로 메소드를 안빼고 registerOrder 메소드에에서 다 처리 했다면 코드 길이가 어마어마하게 길어져서 다른사람은 registerOrder 메소드 보자마자 때려치고 싶어 할거다. 그래서 이렇게 따로 메소드로 빼는게 좋긴한데 메소드 이름 정하는게 제일 어렵다.. 그리고 실제 작업전 미리 어떻게 하는게 좋을지 틀을 이렇게 생각해보고 정리하고 시작했는데 당연 시작전 생각했던거랑 달라서 수정하기도 했으나 작업할때 막힘이 없어서 좋았다. ↓ ↓ ↓ ↓ ↓ ---------------------------------------.. 2023. 12. 8.
23/12/07 프로그래머스 모의고사 문제 def solution(answers): answer = [] a = [1, 2, 3, 4, 5] b = [2, 1, 2, 3, 2, 4, 2, 5] c = [3, 3, 1, 1, 2, 2, 4, 4, 5, 5] count=[0,0,0] for idx,value in enumerate(answers): if a[idx % len(a)] == value: count[0]+=1 if b[idx % len(b)] == value: count[1]+=1 if c[idx % len(c)] == value: count[2]+=1 rank_max= max(count) for idx,value in enumerate(count): if value == rank_max: answer.appen.. 2023. 12. 7.
23/12/06 프로그래머스 소수 만들기 문제 from itertools import combinations import math def solution(nums): answer = 0 for i in combinations(nums,3): for k in range(2,int(math.sqrt(sum(i)))+1): if sum(i) % k == 0: break else: answer+=1 nums에 있는 리스트에서 3개를 골라 소수인지 판별 해야한다는걸보고 바로 combinations이 생각났다!! (combinations는 순서를 고려하지 않고 조합의 경우를 구할때 사용) 3개의 조합 경우를 각각 다 더하고 소수인지 판별하면 끝인데 여기서 소수인지 효율적으로 구하는 방법은 2부터 해당값의 제곱근+1 까지만 나머지가.. 2023. 12. 6.
23/12/04 프로그래머스 2016년 문제 def solution(a, b): day=["FRI","SAT","SUN","MON","TUE","WED","THU"] month=[0,31,29,31,30,31,30,31,31,30,31,30,31] check= (sum(month[:a])+b) % 7 answer = day[check-1] return answer 이 문제를 읽고 처음엔 윤년이라는 것도 몰라서 검색해보니 2월에 29일까지 있는거였고,각 달마다 30 or 31 인지도 몰라서 일일이 확인을 했다. 그러고 month에 인덱스 1부터 1월로 하고 각달의 일수 넣고,day리스트에는 문제에서 1월1일이 금요일부터 시작한다해서 금요일부터 시작하게 넣었다. 그후 a월 전까지 모든 일수에 b일수를 더하고 7로 나눴을때 .. 2023. 12. 4.
23/12/01 댓글 생성 컨트롤러 테스트 하던중 이런 오류가 뜨고 오류 내용들 알아보니 직렬화- 역직렬화랑 관련이 있는 문제였다. 해석해보니 "HTTP 요청으로부터 전달된 JSON 데이터를 스프링이 해당하는 Java 객체로 변환하려고 시도할 때 발생" "Resolved [org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Cannot construct instance of `cohttp://m.todoapp.todoapp.dto.comment.CommentRequestDto` (although at least one Creator exists): cannot deserialize from Object value (no.. 2023. 12. 1.
23/11/30 서비스의 카드 생성 테스트 해보려 했는데 처음엔 밑에 테스트 코드쪽 보면 가짜 레포지토리 save에서 card로 넣었더니 이런 오류가 떴다. 정확히 어떤 뜻인지는 잘 모르나 주소인지 어떤값이 불일치 하다 나오는데 테스트 코드의 new Card() 주소나 해시값이 있는데 실제 메소드에서도 new Card()해서 당연 서로 다르니 오류인듯한? 그래서 가짜 jpa레포지토리 메소드 매개변수에 실제 메소드쪽 값은 물론이고 메모리 주소도 동일해야 하는듯한? 그러므로 귀찮게 일치하나 따지지 않고 일치하지 않아도 상관없는 any()를 사용하는것같다. 생각 해보면 일단 글 생성 메소드 테스트 할땐 강의에 나온대로 레포지토리에 저장하는건 중요하지 않고 밑에 main코드 보면 SelectCardResponseDto에 잘 넣.. 2023. 11. 29.
23/11/29 프로그래머스 시저암호 문제 def solution(s, n): answer = '' for i in range(len(s)): check = ord(s[i])+n if s[i] == " ": answer +=" " elif 65 122 else chr(check) return answer # 대문자 65~90 # 소문자 97~122 먼저 이 문제를 보고 아스키 코드가 생각 나긴했다. 그런데 영대소문자는 범위가 있으니 해당 범위가 초과하면 그 부분도 따로 처리해주면 된다. 2023. 11. 29.