공부/Java 복습

Java 문자열을 뒤집는 4가지 방법 + 시간효율

ChoiDooSic 2021. 9. 26. 23:36

문자열을 4가지 방법을 이용하여 뒤집어보세요.

문자열을 뒤집는 4가지 방법을 누군가 물어봤다...

뭔가 쉽게 뒤집겠네 라고 생각했지만 당장 떠오른 방법은

빌더를 이용한 방법과 charAt을 이용한 방법만이 머리에 떠올랐다

그래서 뭔가 재미있겠다 싶어 공부해보았고 어느 방법이 가장 속도가 빠른지도 궁금하여 체크해 보았다.

(프로그램의 시간 성능을 측정하는 방법은 간단한 내용이지만 따로 다루도록하겠다.)

 

시간을 구하는 방법은 System.currentTimeMillis();를 사용하면 밀리초 단위로 시간을 구해지는데

이 방법으로는 코드가 너무 짧아 시간이 구해지지않아 더 자세한 시간을 구하기 위해

nanoTime() 메서드를 이용하여 구하였다.

 

첫 번째 방법은 charAt()을 이용한 방법이다.

for문을 이용하여 checker에 담아둔 문자열의 길이만큼 반복문을 돌려주는데

이때에 i는 checker의 길이에 -1값을주고 0과 같거나 클때까지만 반복문을 돌려주며 i를 1씩 빼준다.

(배열의 길이는 0번부터 시작하기때문에 -1을 주는것이다)

reverStr에 charAt()을 이용하여 checker에 담긴 문자의 끝부분부터 차례대로 더해주는 방법이다.

 

 

두 번째 방법은 StringBuilder의 reverse() 메서드를 이용하여 문자열을 뒤집는 방법이다.

매우 간단하여 설명할게 없다... 다만 첫번째 방법과 속도차이가 꽤나 난다는 것을 알 수 있다

코드가 더 길어졌을때에도 첫번째 방법이 빠를지 궁금하다 이 부분은 나중에 테스트 해보아야 겠다.

 

세 번째 방법은 StringBuffer을 이용한 뒤집는 방법인데 Builder와 다를게 없다

다만 속도는 Buffer가 Builder보다 더 빠른걸 볼수있다.

 

마지막 네 번째 방법이다 이 방법은 checker에 문자를 toCharArray() 메서드를 이용하여

char배열에 담아주고 ArrayList<Charcter>를 선언하여 그 안에 다시 담아주어

Collections메서드의 reverse() 기능을 이용하는 방법이다.

굉장히 번거로운 방법이고 속도의 효율도 좋지않으니 이런 방법이 있다는것만 알아두면 좋을거같다.

 

시간차이를 구해보는것은 이번이 처음이다

백준 문제를 풀면서 구해준 시간을 보기는 했으나 직접 이렇게 구해보는것은 처음이였다

꽤나 흥미롭다 다음부터는 코드를 짤때에 직접 한번씩 체크하여 더 좋은 코드를 짜봐야겠다.

 

가장 코드 효율이 좋은 방법은 1번이였고

문제풀이를 쉽게 할수 있는 방법은 2번과 3번이였던것 같다.

'공부 > Java 복습' 카테고리의 다른 글

Java HashSet, Stream, for문을 통한 중복제거 방법  (0) 2021.09.28
Java ConvertedSecond  (0) 2021.09.25
Java checkWord  (0) 2021.09.24
Java DiscountDay  (0) 2021.09.23
5DiceGame 자바  (0) 2021.09.12