코딩테스트 문제를 인텔리제이(IDE)로 옮기면서 자바 Java 기초에 더 익숙해지기 (2)
※ 이번 포스팅은 코딩테스트 문제를 인텔리제이(IDE)로 옮기면서 자바 Java 기초에 더 익숙해지기에 이어지는 내용입니다…만 이 포스팅만 보셔도 무방합니다.
코딩테스트를 인텔리제이로 옮기면서 자바 기초에 익숙해지는 방법을 조금 더 소개하고자 함.
[내가 작성한 코드와 다른 사람의 코드를 하나의 클래스 안에 공존시키기]
똑같은 코딩테스트 문제를 풀었는데 나보다 훨씬 더 잘 풀었던 사람들. 그들의 존재에 좌절하지 말고 그들의 답을 복사해서 내 실력을 키워본다…는 생각이 어느새부터 들게 되었다. 프로그래머스 자바 0단계 문제 중, “문자열 뒤집기”에서 다른 사람이 작성한 코드를 아래와 같이 복사해 본다.
인텔리제이에서 내가 작성했던 기존의 solution 메서드는 주석처리하고 복사한 코드를 붙여넣은 후, 다른 사람의 정답 코드를 복붙한 후에 solution 메서드에는 static을 붙인다. 내 코드나 복사한 코드나 solution 메서드의 반환타입이 String으로 동일하기 때문에 이렇게 하는 건 별로 어려운 일이 아님.
(메서드의 이름을 solution1, solution2, solution3, … 이렇게 만들어주고 main에서 실행할 때 이 메서드들을 하나씩 실행해도 되고, 여러 개씩 실행해도 됨)
그런데 붙여넣은 구현부 중간의 += 이 오렌지색 선으로 표시되어 있어 클릭하니까 -> 오렌지색 전구가 나타나고, 그걸 다시 클릭하니까 -> 변수 answer를 String에서 StringBuilder로 바꿔보라고 한다. 사실 빨간색이 아닌 오렌지색 전구는 무시하고 실행해도 에러가 나는 것은 아니다. 그래도 한 번 클릭해 보았더니
위와 같이 StringBuilder 를 이용해서 답을 구하는 코드가 자동완성되었다. 이 문제를 풀 당시에는 StringBuilder를 살짝 배우긴 했지만 어떻게 써야할 지는 모르는 상태였는데, 인텔리제이가 제안한대로 한 번 코드를 바꿔보니 StringBuilder의 사용을 어렵지 않았다는 것을 깨달았다.
(오렌지색 전구가 항상 더 좋은 것만 제시하는 것은 아니며 제안대로 할 필요도 없다. 하지만 제안내용이 위의 StringBuilder처럼 내가 들어는 봤어도 쓰는 방법을 모르는 경우라면, 공부하는 차원에서 바꿔보는 것을 추천한다.)
StringBuilder를 이용한 코드와 이용하지 않은 코드를 다 남기기 위해서 위와 같이 2개의 solution 메서드를 다 남겨봤다.
[이런 식으로 다른 사람의 코드 중 내 것보다 좋은 것들은 다 복사해두기]
프로그래머스에서 내 코드보다 더 좋은 코드를 여러 개 더 복사해둔 화면캡처이다. “더 좋다”는 기준이 정해진 건 없다. 나에게는 더 간결하고 더 이해하기 쉬운 코드가 더 좋다고 생각한 것.
처음부터 이렇게 해 봤으면 어땠을까… 생각해봤지만, 코딩의 ㅋ자도 몰랐던 상태에서는 아무 생각도 없었을 것이 분명하다. 자바가 익숙해지고 다른 프로그래밍 언어를 배워야 할 때, 코딩테스트를 해당 언어의 문법에 익숙해지기 위해 접근한다면 ~ 코딩테스트도 해당 언어도 더 익숙해질 것이란 생각이 든다.
댓글남기기