오늘 공부한 내용

  • Spring 숙련주차 1주차 시청 
  • Spring Security 로그인, 접근불가 처리
  • 코드카타 문제 풀기

어려웠던 내용

  •  Spring Security JWT

초기 가르쳐줄때 인증, 인가 만 하던 처리 하던것에서 토큰을 가져와서 적용하는 부분으로 수정할때 이해가 어렵다.

 

 

새로 알게된점

  • API 접근 권한 제어 이해

페이지 접속시 관리자를 제외한 회원들을 관리자 페이지에 접속 하지 못하게 하기위해서 회원 상세정보 (UserDetailsImpl)에 권한(Authority) 설정하여 특정 권한을 가지지 못하게 하는자를 API를 통해 못들어오게 할 수 있다.

 

  • 자릿수 더하기
문제 설명

자연수 N이 주어지면, N의 각 자릿수의 합을 구해서 return 하는 solution 함수를 만들어 주세요.
예를들어 N = 123이면 1 + 2 + 3 = 6을 return 하면 됩니다.

 
제한사항
N의 범위 : 100,000,000 이하의 자연수
 

입출력 예

N answer
123 6
987 24
입출력 예 설명

입출력 예 #1
문제의 예시와 같습니다.

입출력 예 #2
9 + 8 + 7 = 24이므로 24를 return 하면 됩니다.

 

*원래 문제의 의도대로 숫자에서 각각의 백의 자리, 십의 자리, 일의 자리를 더하는 방식으로 정수 N을 문자 String 방식으로 바꾸었으나 각각 따로 합치는 방법을 찾지 못했다. 그래서 while문을 사용해서 정수를 10씩 나누어 일의자리를 더하는 방식으로 만들었다.

public class Solution {
	public int solution(int n) {
		int answer = 0;
		
		while (n > 0) {
			answer += n % 10; // 일의 자리부터 자릿수 더하기
			n /= 10;
		}
		return answer;
	}
}

이렇게 할 경우 입력한 값에서 answer += n % 10; 통해 나머지 값을 따로 빼낸후 입력값을 10으로 나누어 나머지를 없애는 int형 정수로 만든다음 다시 answer += n % 10; 통해 나머지 값을 따로 빼내는 형식의 while문으로 처리된면서 빼낸값들을 합치는 방식으로 처리한다.

만약 입력한 값이 135 라면 135%10 = 5 이며

answer += 5 인 셈이다

135 -> 5

13 -> 3

1 -> 1

5+3+1 = 9 를 쉽게 구할 수 있다.

 

이후 처음 의도대로 하는 방법을 찾아보다가 코드를 찾았는데

class Solution {
    public int solution(int n) {
        int answer = 0;
        String a = Integer.toString(n);
        
        for(int i = 0; i < a.length(); i++){
            answer += Integer.parseInt(a.substring(i, i + 1));
        }
        return answer;
    }
}

해당 코드에서는 parseInt를 이용했었다.

분명 처음 배울때 parseInt에 대해 배우긴 했지만 실제로 이렇게 이용하는거는 처음봐서 굉장히 신기 했다.

 

 

 

오늘의 느낀점

코드 카타를 풀고 다른사람들의 풀이를 보면서 정말 다양한 방법들이 있다는것을 알게 된다.

코드를 쉽게 적거나, 읽기좋게 만들거나, 효율을 올리는등 정말 다양하게 적혀 있는걸 보면서 좀더 생각의 틀을 넓혀야 겠다는 생각을 느꼈다.

+ Recent posts