작성
·
409
1
안녕하세요 강의 잘 보고 있습니다.
그런데 이번 문제 해설 강의에서는 빈틈이 좀 많이 보이는 것 같습니다. 소스코드만 봐도 [0,0] 같은 경우는 [0,1]이 되어야 하는데 2번째 if문에 의해 [1,0,0]이 되구요..첫번째 if-else문에서도 원소값이 9이면, 999일 때 뿐만 아니라 989나 899처럼 자릿수가 변화하지 않는 케이스들도 있는데 현 소스코드에서는 이러한 케이스들을 충분히 처리하지 못하는 것 같습니다...아래 2달전 질문 답변에서 가능한 빨리 강의 수정해주신다고 하셨는데 언제쯤 수정된 솔루션이 공개되는지 궁금합니다.
감사합니다.
답변 7
2
안녕하세요.
엣지케이스가 여러개 있네요. 생각 못했던 부분인데 지적 감사합니다.
899, 989 , 00, 100이 케이스를 추가해서 넣어보겠습니다.
AddTwoNumbers문제 형태로 풀어보겠습니다.
자릿수 마지막에 +1을 더하고 int carry 값이 10을 넘었는지 체크
마지막에 carry==1이면 배열 첫번째 방에 1 넣기(999=>1000 형태)
github에 소스 올렸습니다.금요일에 영상 올리겠습니다.
늦게 올려서 죄송합니다~
1
1
0
aa 님 안녕하세요~~
확인해보니 , 989, 899가 제대로 나오는데요
아래 소스 파일 첨부했습니다.
github에 있는 소스랑 같습니다.
이상하시면 해보시고 다시 글 남겨주세요
감사합니다.
public class PlusOne {
public static void main(String[] args) {
// int[] digits = { 1, 2, 3 };
// int[] digits = {9,9,9};
// int[] digits = {9,8,9};
int[] digits = {8,9,9};
// int[] digits = {0,0,1};
// int[] digits = {0,0};
// int[] digits = {9,0,0,9};
// int[] digits = {9,9,9,9,9};
int[] result = solve(digits);
for (int i : result)
System.out.println("val: " + i);
}
public static int[] solve(int[] digits) {
int n = digits.length;
for (int i = n - 1; i >= 0; i--) {
digits[i]++;
if (digits[i] < 10) {
return digits;
}
digits[i] = 0;
}
int[] res = new int[n + 1];
res[0] = 1;
return res;
}
0
0
0