10번

nacSeo (낙서)·2022년 11월 30일
0

DailyCoding

목록 보기
10/28

문자열을 입력받아서 연속되게 한 자리 홀수가 오면 사이에 -를 넣어주는 문제였다.
결과값을 저장할 문자열을 새로 하나 선언해주고, 문자열 str을 for문으로 돌리는데 해당 요소해당 요소+1의 값이 둘 다 홀수면은 "-"를 추가해주는 것으로 코드를 짰다.
테스트 결과 java.lang.StringIndexOutOfBoundsException 발생 🚨
고민하다보니 for문을 돌리면서 해당 요소가 str의 마지막 값까지 갔을 때, 내가 존재하지도 않는 해당 요소+1을 사용하려 했다는 것을 알게 되었다. 따라서, for문에 i<str.length()까지 돌리던 걸 i<str.length()-1까지만 돌려주고 마지막 return값에 마지막 요소인 str.length()-1의 요소를 추가해줘서 해결하였다. 😎

해결 후, 레퍼런스 코드를 보니 그냥 처음부터 str의 첫 번째 요소를 결과값을 저장할 문자열 result에 미리 추가해두고 for문을 i=0이 아니라 i=1부터 돌리는 것으로 짰다. 그리고 해당 요소해당 요소+1의 값이 아니라 해당 요소-1해당 요소의 값이 홀수일 때로 코드가 작성되어 있었다.
그렇다...!💡 이렇게 하면 애초에 str.length()-1이라든지 리턴문에 마지막 요소를 추가해준다는지의 번거롭고 지저분한 코딩이 필요 없었다 😂 나는 연속해서 홀수가 온다는 걸 현재와 다음 요소를 생각했고, 레퍼런스에서는 현재와 그전 요소를 생각했다는 차이 하난데 보다 클린한 코드를 짤 수 있던 것이었다. 좀 더 깔끔한 코드를 하는 사고... 노력하쟈!!!😤 🔥🔥🔥

+) 추가적으로 레퍼런스 코드에서는 if문으로 받는 인자를 간결하게 하기 위해 따로 int형으로 받아주었는데, str.charAt()의 값을 int형으로 받을 때는 무언가 함수가 필요했다. (char형을 int형으로 받기 때문 ❗️)
Character.getNumericValue()를 이용해서 빈 칸에 char타입 값을 넣어주면 int형으로 변환해서 저장시킬 수 있었따❗️

profile
백엔드 개발자 김창하입니다 🙇‍♂️

0개의 댓글