ts930904   6년 전

로직은 이러합니다.

1 .R이 2번연속쓰이면 안쓰는것과 마찬가지이므로

"RR"을 전부 지워버립니다

[1,2,3,4] 와같은 입력값들은  "["  ,  "]"  ,  "," 를 지워서,

차례로 LinkedList에 넣었습니다.


2.  R함수를 기준으로 값이 변하는 flag를 두었습니다.

flag 이름은 isFirst. 초기값은 true 입니다.

R함수가 나올때마다 true <->false 로  변하게 됩니다.

함수들을 주욱 읽어가면서

isFirst가 true 일때 D함수가 나오면 숫자 list들의 앞쪽이 지워지고,

isFirst가 false 일대 D함수가 나오면 숫자 list들의 뒤쪽이 지워지는 방식입니다.


3.최종적으로 isFisrt가 true 이면, 남은 list들을 순차적으로 출력하고

isFisrt가 false 이면, 남은 list들을 역순으로 출력하게 하였습니다. 


4.list가 비어있을때 "D"함수가 실행될때 error를 출력해야하는데 ,

try -catch문으로 예외처리하여 error가 뜨게 하였습니다.


고수님들께 도움 요청드립니다 ㅠㅠ



djm03178   6년 전

결과가 빈 배열인 경우 []가 되어야 하나 52번째 줄에서 start가 end보다 큰 substring을 수행하고 있으므로 StringIndexOutOfBoundsException 이 발생합니다. 이를 catch에서 모든 Exception에 대해 낚아채가고 있으므로 런타임 에러가 나지 않고 error가 더해지면서 오답이 됩니다.

ts930904   6년 전

감사합니다!! 바로 실행해보겠습니다

djm03178   6년 전

다음으로 잘못된 곳을 찾았습니다.

입력으로 빈 배열이 주어진 경우, 18번째 줄의 split이 1개의 원소 ""가 담긴 String 배열을 리턴하는 것을 확인했습니다.

따라서 이 경우 21번째 줄에서 예외가 발생하고, 역시 catch가 낚아채서 error를 무조건 담아버립니다. 명령으로 D가 주어지지 않아도요.

djm03178   6년 전

여기까지 수정하니 정답을 받았습니다.

ts930904   6년 전

너무 감사합니다 ㅠㅠㅠ 언능 확인해봐야겠네용

ts930904   6년 전

말씀해주신 2곳 수정하여 정답받았습니다!!

덕분에 발뻗고 잘수있을거같아요

정말감사합니다!

djm03178   6년 전

여담이지만, try catch 시에는 가능한 좁은 범위의 Exception을 캐치하는 것이 좋습니다. 지금처럼 최상위 예외인 Exception을 캐치하게 되면 중간에 어느 문장에서 예외가 발생하더라도 모두 catch가 잡아가기 때문에 예상한 곳에서 발생한 예외인지 아니면 전혀 다른 메서드가 발생시킨 예외인지 구분할 수가 없습니다. 예상하지 않은 예외는 차라리 아예 처리가 안 되게 해서 런타임 에러를 발생시키는 것이 디버깅 하는 데에 좋습니다.

댓글을 작성하려면 로그인해야 합니다.