알고리즘

[프로그래머스, 자바] 배열 뒤집기, 문자열 뒤집기

hminor 2024. 3. 16. 11:41

풀이

  • 해당 문제는 포스팅은 따로 작성한 이유는
  • 방법에 대하여 포스팅을 해두면 기억을 오랫동안 할 수 있을 것 같아서 
  • 따로 포스팅을 하게 되었습니다.
  • 우선 배열을 뒤집는 방법은 다양하게 있지만 
  • 자바는 파이썬 처럼 모든 배열을 reverse() 이렇게가 안되고, 타입에 따른 reverse()가 있기에
  • 해당 문제로 받아오는 배열은 int[] 이었기에 int[] 타입의 배열을 따로 하나 더 만든 다음
  • Arrays.setAll()을 사용해서 변경하기로 했다.
  • 첫 번째 인자로는 변경하고자 하는 배열, 두 번째 인자로는 인덱스를 넣어 주고
  • 해당 메서드는 return값이 null 이기에 실행 후 변경된 배열을 return하여 해결
  • 그리고 문자열 뒤집기의 경우엔 
  • StringBuilder에도 reverse()가 있는지 모르고 
  • 우선은 효율적인 것을 포기하고 단순하게 toCharArray()로 만든
  • char[] 배열에 해당하는 문자를 String 타입 변수에 더하여 해결했는데
  • StringBuilder를 활용하여 문자를 reverse()하고 toString()으로 return하여 해결.
  • 역시 String을 다룰때 값을 계속 추가하게 되면 새로운 객체를 생성하는 것이기에
  • 시간 효율이 좋지 않은데 StringBuilder를 사용하게 되면 효율적으로 좋기에
  • 아래 코드와 같이 사용하는 것이 좋다.

 

배열 뒤집기

import java.util.*;
class Solution {
    public int[] solution(int[] num_list) {    
        int[] result = new int[num_list.length];
        Arrays.setAll(result,i -> num_list[num_list.length-1-i]);
        return result;
    }
}

 

문자열 뒤집기

import java.util.*;
class Solution {
    public String solution(String my_string) {
        String answer = "";
        char[] li = my_string.toCharArray();
        for (int i =my_string.length()-1; i>=0; i--) answer+= li[i]; 
        return answer;
    }
}

import java.util.*;
class Solution {
    public String solution(String my_string) {
        StringBuilder sb = new StringBuilder();
        sb.append(my_string);
        sb.reverse();
        return sb.toString();
    }
}