* 강의
나만의 셀렉트 샵에서 벗어나고 싶다 오류 잡느라 또 한 세월이 흐르는구나...
오류코드 302
원인1) 오탈자: 오탈자가 쿼리문에서 나서.. 아예 시큐리티 쪽에서 접근을 못 하게 해서 Controller 디버깅으로 잡아낼 수가 없었다(Controller 통과하기 전에 밴당함). 작동하지 않으려면 모두 작동하지 않아야하는데 어떤 페이지는 작동하고 어떤 페이지는 작동하지 않으니까 이상함을 느끼신 알고리즘 팀원분이 프론트 문제일 것 같다고 열심히 오탈자 비교해서 찾아내주셨다.. 아침에 성원 튜터님이랑 1시간 오후에 원욱 튜터님이랑 1시간 씩 머리 싸매고 고민했는데 결국 오탈자 문제였다니 허탈했다.. 하지만 친구에게 말하니까 이런 오탈자 문제를 잡아내는 것도 나중에 다 도움이 될 거라고 하더라. 튜터님 말씀대로 도닦는 기분으로 열심히 비교분석하면서 살아야겠다는 생각이 들다.
원인2) API 누락: 이건 알고리즘 팀장님 도움을 받아서 해결 하나하나 불러주셔서 감사합니다.
분명 입력한 API같고, 익숙한데 왜 갑자기 사라졌는지 모르겠다. 다른 팀원분은 오류 때문에 커밋 건드리면서 사라진 건 아닐까 싶다고 말씀해주셨다. Controller와 Service 부분이 동시에 사라진 거 보니 강의를 다 건너뛰었다기보단 커밋하면서 건드려진 게 맞는 것 같긴하다...! 사라진 이유가 정말 내 착각인지 커밋의 문제인지 확실하게 알 수 있으면 좋을 것 같지만 지금으로써는 알 방법이 없는 것 같다. ㅎㅎ;
Java문법이랑 Spring이랑 같은 동작을 하는 건데 내가 자꾸 다르게 인식하고 있다.
이론 부분을 더 공부해서 이런 간극을 좁혀나가야겠다는 생각이 든다.
* 알고리즘
1. 없는 숫자 더하기!
import java.util.*;
class Solution {
public int solution(int[] numbers) {
// 정수 배열의 최소값부터 최대값을 범위로 지정하여 합계 구하기
int sum = 0;
for (int i = 0; i <= 9; i++) {
sum += i;
}
// 위에서 구한 합계에서 실제 정수 배열의 합계를 빼기
// 실제 정수배열의 합계
int sumNumbers = 0;
for (int n : numbers) {
sumNumbers += n;
}
// 빼기 연산
int answer = sum - sumNumbers;
return answer;
}
}
이건 팀원분의 풀이를 먼저 보고 풀이해서 보다 쉽게 풀 수 있었다.
0부터 9의 숫자 중 랜덤 개수의 숫자가 들어있는 배열에서 없는 숫자를 찾아 리턴하는 문제였고,
문제를 처음 봤을 때 배열에서 없는 수를 어떻게 찾아서 합산하지?라는 생각을 했는데
그냥 0부터 9까지 더한다음에 배열의 합을 빼주면 없는 숫자의 합이 되는 거였다.
아이디어를 미리 보고 풀어서 그런가 진행은 코드만 쓰는 건 어렵지 않았고
팀원분께서 0부터 9를 수기로 더한 sum = 45;에서 for문 돌리는 걸 좀 더 자동화(팀장님 의견)하기 위해 코드를 추가했다.
그런데 처음엔 좀 생각을 어렵게(?)해서
Arrays.sort(numbers);
int min = [0];
int max = [numbers.length - 1];
int sum = 0;
for (int i = min; i <= max; i++) {
sum += i;
}
이런식으로 총 합계를 구하려고 하다가 오류가 났다.
배열의 최소값부터 최대값을 구해서 사이에 있는 모든 수의 합을 구하는 함수를 만든 건 맞지만
문제 조건은 0부터 9까지 중 일부가 배열에 들어간다는 거였고,
최소값이나 최대값으로 0이나 9가 들어가지 않으면 sum의 값이 유동적이 되어서 어떤 테스트는 통과하고 어떤 테스트는 통과하지 못했던 것이다..
단순하게 for문에 숫자만 변경하는 방법으로 자동화를 할 수 있었는데 빙빙 돌아간 꼴이 되었다는 이야기.