TIL 22.12.29

쓰옹·2022년 12월 29일
0

개발자를 향해~~TIL✍

목록 보기
52/87

TODAY


  • 알고리즘 문제풀이
  • 예외처리 알아보기 근데 이것저것 해보다 결국 제자리임
  • 스프링 후발대 수업
  • Blog 예외처리


프로그래머스 알고리즘 문제풀이


프로그래머스 알고리즘 풀이 깃허브 링크

  • 문자열 대체할 때 replaceAll(대체할 내용, 바뀔내용) 을 쓰면 됨
    answer = my_string.replaceAll(letter, "");
    my_string 문자열에서 letter문자를 빈 문자로 대체하는 코드이다.

  • 짝수, 홀수 개수 담은 배열을 반환하는 문제에서

public class EvenAndOdd {
    public int[] solution(int[] num_list) {
        int[] answer = new int[2];
        int even = 0;
        int odd = 0;
        for (int num : num_list){
            if ( num % 2 == 0 ) {
                even++;
            } else odd++;
        }
        answer[0] = even;
        answer[1] = odd;
        return answer;
    }
}

이렇게 했는데 다른 사람의 풀이를 보니까

int[] answer = new int[2];

for(int i = 0; i < num_list.length; i++)
	answer[num_list[i] % 2]++;

return answer;

처음엔 이걸 보고 뭔소린가 했는데...
짝수는 나머지가 0이고 홀수는 1이니까 그 자체를 인덱스로 활용하는 ..아주 기발한 방법이다!



예외처리


IllegalArgumentException으로만 예외처리를 작성해서 그걸로 exceptionHandler를 만들고 돌렸는데
회원가입 시 형식에 어긋나면 발생하는 예외는 따로 처리를 안했줬다.

그래서 에러 내용을 보고 MethodArgumentNotValidException으로 예외처리를 해줬다.
그랬더니 에러메세지가 굉장히 지저분하게 나오는 것
그래서 다시 에러내용을 봤다.
setErrorMessage(e.getFieldError().getDefaultMessage()) field에 default message가 눈에 들어와서 인텔리제이에 찾아보니까 저렇게 만들어줬다.
처리를 하니까 깔끔하게 메세지까지 떴다.

profile
기록하자기록해!

0개의 댓글