[Java] Programmers Level 1 문제를 풀면서...

석연걸·2024년 12월 30일

원래 주 언어인 C++로만 코딩 테스트 문제를 풀었는데, 이번에 Spring BootCamp에 들어오고 Java로 문제를 풀기 시작했다. 꽤 오랜만에 Java를 사용해보니 너무 어색하고 기억이 안나는게 많았다. Level 1 문제를 풀며 많이 사용되는 것들을 복습해보자!


1. 변수의 형 변환

String to

  • String to Int

    String str = "12345";
    
    int integer_val1 = Integer.parseInt(str);		// 1번째 방법
    int integer_val2 = Integer.valueOf(str);		// 2번째 방법
  • String to Double,Float

    String str = "12345";
    
    double double_val = Double.valueOf(str);
    Float float_val = Float.valueOf(str);
  • String to Long

    String str = "12345";
    
    long long_val = Long.parseLong(str);
  • String to CharacterArray

    String str = "12345";
    
    char[] chArr = str.toCharArray();
  • String to Character

    String str = "12345";
    
    char ch = str.charAt(0);		// str의 0 위치의 값을 반환


Int to

  • Int to String

    int integer_val = 12345;
    
    String str1 = String.valueOf(integer_val);			// 1번째 방법
    String str2 = Integer.toString(integer_val);		// 2번째 방법
  • Int to Long

    int integer_val = 12345;
    
    long long_val = Long.valueOf(integer_val);
  • Int to Double, Float

    int integer_val = 12345;
    
    double double_val = Double.valueOf(integer_val);
    float float_val = Float.valueOf(integer_val);
  • Int to Char

    int integer_val = 5;
    
    char ch = (char)(integer_val + '0');	// ASCII Code를 이용해 연산


Long to

  • Long to String

    long long_val = 12345;
    
    String str1 = Long.toString(long_val);
    String str2 = String.valueOf(long_val);
  • Long to Int

    long long_val = 12345;
    
    int integer_val = long_val.intValue();
  • Long to Double

    long long_val = 12345;
    
    double double_val = long_val.doubleValue();


Double, Float to

  • Double, Float to String

    double double_val = 12345;
    float float_val = 12345;
    
    String str1 = Double.valueOf(double_val);
    String str2 = Float.valueOf(float_val);
  • Double, Float to Int

    double double_val = 12345;
    float float_val = 12345;
    
    int integer_val1 = (int)double_val;
    int integer_val2 = (int)float_val;
    
    int integer_val3 = (int)Math.round(double_val);	   // 다른 방법
  • Double to Long

    double double_val = 12345;
    
    Long long_val = (new Double(double_val)).longValue();


Char to

  • Char to String

    char ch = 'a';
    String str = Character.toString(ch);
  • Char to Int

    char ch = '7';
    int integer_val1 = (int)(ch - '0');	  // ASCII Code를 이용해 연산
    
    int integer_val2 = Character.getNumericValue(ch);
  • Char to Long

    char ch = '9';
    long long_val = (long)ch;

2. 배열의 정렬

  • 정적 배열 (Static Array)

    • 일반적인 배열을 의미하며, 실제 데이터(원소)를 저장하기 전에 현재 사용중이지 않은 연속적인 메모리들을 미리 예약해두고 시작한다.

    • 삭제 및 추가가 불가능하며, 정의에 따라 계산된 메모리의 값을 연속적으로 예약한다.

    • 시간 복잡도 : O(1)

    • 오름차순 정렬 (int)

      
      import java.util.Arrays;
      
      public class Main {
          public static void main(String[] args) {
               
               int[] intArr = {3, 5, 1, 4, 2};
      		 Arrays.sort(intArr);		// 오름차순 정렬
            
            
            
               // 오름차순 정렬 후: [1, 2, 3, 4, 5]
          }
      }
      
    • 내림차순 정렬 (int)

      
      import java.util.Arrays;
      import java.util.Comparator;
      
      public class Main {
          public static void main(String[] args) {   
      		 int[] intArr = {3, 5, 1, 4, 2};
      
               // int 는 내림차순 정렬이 안되기 때문에 Integer 타입의 객체로 변경해줘야 함
      		 Integer[] changeArr = new Integer(intArr.length);
      
      		 for(int i = 0; i < intArr.length; i++) {
      		      changeArr[i] = intArr[i];	    // changeArr에 intArr 값을 넣어줌
               }
      
               Arrays.sort(changeArr, Comparator.reverseOrder());	  // 내림차순 정렬
               
               // 내림차순 정렬 후: [5, 4, 3, 2, 1]
          }
      }
      


  • 동적 배열 (Dynamic Array)

    • 데이터의 삭제와 추가가 가능하며, 삽입될 데이터를 미리 정의할 필요가 없다.

    • 현재 리스트가 담을 수 없는 길이의 데이터가 들어온다면, 현재 리스트 길이의 2배가 되는 배열을 새로 만들게 된다.

    • 시간 복잡도

      • 배열에 아직 데이터를 저장할 수 있는 공간이 존재해 배열의 길이를 늘려줄 필요가 없을 때 : O(1)

      • 배열이 꽉 차서 더 긴 새 배열을 만들어줘야 할 때 : O(n)

    • 오름차순 정렬 (int)

      
      import java.util.ArrayList;
      import java.util.Collections;
      
       public class Main {
           public static void main(String[] args) {
               // 동적 배열 생성
               ArrayList<Integer> dynamicArr = new ArrayList<>();
      
               // 값 추가
               dynamicArr.add(5);
               dynamicArr.add(2);
               dynamicArr.add(3);
               dynamicArr.add(1);
               dynamicArr.add(4);
      
               // 오름차순으로 정렬
               Collections.sort(dynamicArr);
      
               // 오름차순 정렬 후: [1, 2, 3, 4, 5]
           }
       }

0개의 댓글