코딩 테스트
오늘 풀은 문제는 'x만큼 간격이 있는 n의 숫자 자바' 이다.
문제는 아래와 같았다.
정수 x와 자연수 n을 입력 받아, x부터 시작해 x씩 증가하는 숫자를 n개 지니는 리스트를 리턴해라 라는 말이다.
여기서 long[] 타입을 리턴하는 문제였고, 메서드 파라미터는 int을 받고 있다.
처음엔 순조롭게 테스트 케이스 3개 실패하지 않아서 코드 제출을 하였다.
그런데 마지막 테스트 케이스 2개에서 계속 실패가 나는 것이다..
오버플로우를 방지해야 한다.
아니.. 문제 제한 조건에 x가 int 범위에 무조건 속해 있는 것으로 되어 있었다 ..근데 이게 왜 문제가 될 까..?
라고 생각을 해봤지만 맞다.. 문제가 된다 10,000,000 x 20을 넘어가는 순간 long이 되어 계산하는 과정에 오버 플로우가 생기는 것이 맞다.. 그래서 x를 먼저 long 타입으로 변환해주는 작업을 해주었고 다시 제출하니까 문제가 없었다.
아직 궁금한건 코드를 보면 알겠지만 answer[i] 이 해당 배열은 long타입의 배열인데, x를 몇번 곱하든, 숫자가 넘어가든 담기는 배열에는 문제가 생기지 않을텐데 왜 오버플로우가 일어나는지 모르겠다.
문제 해결 : 깃허브
Java
| 생성자
| this
(복습 #2)
Spring Boot - Locale
다국어 사용자를 위한 언어 설정을 하는 부분에서 오류가 생겼다. 정리로 남겨둘려고 한다.
우선 Request Header 에서 Accept-Language 값을 Locale 에 바로 담을 수 없다는 것을 알게 되었다.
크롬같은 웹 브라우저를 사용하는 경우 Accept-Language 값에 'ko-KR,ko;q=0.9,en-US;q=0.8,en;q=0.7' 이런식으로 들어가 있는데 Locale 에서는 단일 언어 코드만 받을 수 있다. 위에서 하나의 값만 받을 수 있다는 것인데 쉼표와 세미클론 q= 같은 문자들은 Locale에서 허용되지 않는 문제이다. 그래서 발생하는 에러가 invalid charaters 에러이다.
@GetMapping("/hello")
public String helloWorld(@RequestHeader(name ="Accept-Language", required =false) Locale locale){
~
}
위 코드가 에러가 발생하는 코드이다.

RequestHeader 에 Locale을 바로 담는 것이 아닌 HttpServletRequest 을 받아오고, Locale 객체를 생성하면서 메인 클래스에 선언 해두었던 Bean 파일을 가지고오고 여기에 담아준다? 이 기능은 조금 어려운 거 같다.. 환경 세팅이 제일 어려운데 나중에 복습하면서 다시 정리해야겠다.

메인 클래스에 정의한 내용이며, 이것 말고도 yml 파일도 수정해야하고(3줄), 이 Bean 파일을 사용하기 위해서 객체를 받아와야 하는 것만 기억을 해두자.
해결은 안되었다..
그래서 추가적으로 지금 멘붕이다.

위 메인 클래스에서 생성한 빈 메서드 말고 AcceptHeaderLocaleResolver 클래스를 상속 받아서 resolverLocale 메서드를 재정의 해보았고, 컨트롤러에서 해당 메서드를 사용할 수 있게 스프링 설정 파일로 애너테이션 설정과 메서드를 바꿔주었다.

성공이다. Language를 설정한대로 us, kr, fr, ja 으로 헤더 값에 넘어가는데.. 왜 전달 되는 값은 아직 원하는대로 안넘어오는걸까...
외부에 노출 시키고 싶지 않은 데이터 처리 방법 - @JsonIgnore
비밀번호나, 주민번호 같은 필드를 응답해줄때 노출시키면 안되는 정보들이 있다.
필드 적용 방법 @JsonIgnore
Entity 클래스에서 비밀번호나 주민번호 필드위에 @JsonIgnore 를 적용시키면 사용자가 조회할 때 데이터가 넘어가지 않는 방법이 있다.
클래스 적용 방법 @JsonIgnoreProperties(value ={"비밀번호필드" ,"주민번호필드"})
Entity 클래스 위에다가 @JsonIgnoreProperties를 적용시키면 된다. 필드 위에 선언하는 것과 마찬가지로 데이터가 넘어가지 않는다.
'TIL & STUDY' 카테고리의 다른 글
| TIL 16 : 데이터 삭제 요청 처리 방법과 자바 코테 연습등 기타 공부! (0) | 2025.10.09 |
|---|---|
| TIL 15 : URI 버전관리와 다국어 언어 처리 (0) | 2025.10.02 |
| Daily Study : 13 (0) | 2025.09.30 |
| Daily Study : 12 (1) | 2025.09.29 |
| Daily Study : 11 (0) | 2025.09.27 |