인프런 커뮤니티 질문&답변

km54277님의 프로필 이미지
km54277

작성한 질문수

정말 쉽게 풀어보는 코딩 테스트 top 기본 문제 (with 자바)

플러스 원(Plus One)

문제 풀이 오류 문의드립니다

작성

·

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

이 강의 또한 위 질문과 같이 989나 899처럼 자릿수가 변화하지 않는 케이스에서 제대로 진행이 안되던데, 업데이트 된 영상이 맞는지 다시 한번 확인 가능할까요?!

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

aa 안녕하세요

파일 자체를 업데이트 했기때문에 이 강의가 업데이트 된 영상입니다.

감사합니다~

 

0

업데이트 된 영상 어디서 확인 가능한가요?

0

km54277님의 프로필 이미지
km54277
질문자

안녕하세요~업데이트된 동영상 잘 봤습니다!

빠른 피드백 감사합니다!

좋은 하루 되세요~

km54277님의 프로필 이미지
km54277

작성한 질문수

질문하기