* 강의
1. return null;
카카오로그인 구현하는 과정에서 오류가 발생해서 또 성원 튜터님을 찾아뵈었다.
1) 이메일 정보가 null값으로 나타남
알고리즘 팀장님의 도움(매번 감사합니다)을 받아 사업자등록번호를 입력하지 않고도 카카오 디벨로퍼스 내의 앱을 비즈앱으로 전환했다. 새로운 아이디를 이용해서 이메일 정보 제공에 동의를 하니 DB에 정상적으로 등록되었다.
2) access token 값이 null로 나타남
return null; 값으로 구현되어 있던 부분을 수정하지 않아 생성된 토큰이 return 값에 들어가지 않고 있었다.
return createToken;으로 값을 변경해주니 정상적으로 작동했다..
웬만하면 return null; 해놓고 나중에 변경해야지~ 같은 행동은 하지 않는 것이 좋다는 티칭을 받았다. 감사합니다.
+ F12 창을 띄워놓고 새로고침을 우클릭하면
캐시를 비우고 강력 새로고침을 할 수 있다는 팁도 알게 되었다.
2. Intelij의 Squash Commit(커밋 합치기) 기능
Assertion Test 강의를 들으면서 여러 가지 기능을 배우다보니 커밋도 여러 번 하는 실수를..
같은 assertions test commit만 총 3버을 했다.
커밋 이력을 조금 더 깔끔하게 정리하고 싶어서 3개를 모두 선택하고 우클릭해보니 Squash Commit이라는 메뉴가 있어 사용법 검색해보고 바로 합쳤다. 아래와 같이 Commit message도 함께 합쳐진다.
* 알고리즘
1. 나누어 떨어지는 숫자 배열 / 재풀이
1) 기존 코드
import java.util.List;
import java.util.ArrayList;
import java.util.Arrays;
class Solution {
public int[] solution(int[] arr, int divisor) {
List<Integer> answerList= new ArrayList<>();
for (int num : arr) {
if (num % divisor == 0) {
answerList.add(num);
}
}
if (answerList.isEmpty()) {
return new int[] {-1};
}
int[] answer = answerList.stream().mapToInt(Integer::intValue).toArray();
Arrays.sort(answer);
return answer;
}
}
2) 다시 푼 코드
import java.util.*;
class Solution {
public int[] solution(int[] arr, int divisor) {
List<Integer> answerList = new ArrayList<>(); // answerList 선언
// divisor로 나누어 떨어지는 element 값 구하기
for (int element : arr) {
if (element % divisor == 0) {
answerList.add(element);
}
}
// divisor로 나누어 떨어지는 element가 하나도 없을 경우 배열에 -1을 담아 반환
if (answerList.isEmpty()) {
return new int[] {-1};
}
int[] answer = new int[answerList.size()];
// for문을 통해 answerList.size의 값으로 index 찾기
for (int i = 0; i < answerList.size(); i++)
answer[i] = answerList.get(i);
// 배열을 오름차순으로 정렬하여 반환
Arrays.sort(answer);
return answer;
}
}
이 문제를 재풀이한 이유:
int[] answer = answerList.stream().mapToInt(Integer::intValue).toArray();
(내가 검색해서 풀이한 거긴 하지만)
문제를 다시 봤을 때 위 코드가 이해되지 않았기 때문이다. ㅎㅎ
이걸 처음 풀었을 때보다는 for문이나 배열의 사용에 익숙해졌기에 다른 방식으로, 직접 풀어보고 싶었다.
answerList의 size 값으로 배열의 index를 찾아내는 방식을 사용하니 원만하게 답을 구할 수 있었다.
List나 다른 콜렉션에서 요소를 가져올 때 .get()을 사용한다는 걸 지난 알고리즘 풀이 때 알게 되었고,
이번 문제를 풀이하면서 사용해보았다.
-> 여기서는 answerList.size를 통해 i값을 구해서 answerList의 요소를 배열 answer의 동일한 위치에 할당한다.
이렇게 리스트의 각 요소를 배열로 복사하는 for문을 만들었다.
2. 과일장수
import java.util.*;
class Solution {
public int solution(int k, int m, int[] score) {
int answer = 0;
Arrays.sort(score);
for (int i = score.length; i >= m; i -= m) {
answer += m * score[i - m];
}
return answer;
}
}
어제 풀었던 과일장수 ~ for문 연산을 다양하게 활용할 수 있다는 걸 항상 기억해두기.
'Java & Intellij' 카테고리의 다른 글
231129 TIL (0) | 2023.11.29 |
---|---|
팀 프로젝트 KPT 회고록: 직관 메이트 만들기 (2) | 2023.11.27 |
231123 TIL (1) | 2023.11.23 |
231122 TIL 어제, 오늘의 알고리즘 풀이 (0) | 2023.11.22 |
231121 TIL: Spring 입문 1주차 강의 재수강 (0) | 2023.11.21 |