본문 바로가기
Today I Learned 2024. 3. 4.

(24.03.04) Java 코딩 연습 문제 풀기 및 정리_01 👨‍💻

Java Note

SQLD 시험 볼 때, 간단하게 실습 연습을 하기 위해서 programmers 사용한 이후로 다시 이용해 보기로 했다.

 

거의 3~400개 되는 간단 연습 예제를 위주로 Java언어와 문법에 익숙해지는 것을 목표

예제를 풀면서 중요하다곤 생각하는 Java 구조나 메서드들은 Notion에 구체적으로 기록하면서 진행

중요한 내용들을 블로그에 정리 마무리

 

PM을 준비할 때도 그렇고 SQL 알고리즘이 머리에 박혀있어서.. Java의 구조 및 문법에 빨리 익숙해 질 필요가 있다고 느다. ex) SUM이나 DISTINCT 같은 문이 먼저 떠오르는 등..


합 구하기

  • 임의의 0값으로 선언한  int 변수에다가 계속 대입연산자로 더하는 방식 
  • 대입연산자 += 과 for 반복문을 사용
  • 평균을 구하는 등에 활용할 수 있음
public class Practice {
    public static void main(String[] args) {
        int n = 10;
        int times = (n - n % 2) / 2; // 10 이하의 짝수의 갯수

        int sum = 0;
        for (int i = 0; i <= times; i++) {
            sum += i;
			// SQL에서 SUM을 쓰듯이 여기서는 다 더하는게 아닌 "양쪽 더해서 왼쪽 변수로 선언" 잊지 말기
        }

        int answer = sum * 2;
        System.out.println(answer);
    }
}

 

**주의** 

정수 타입으로 sum을 하고 평균을 구한다면, 가수부가 나올 수 밖에 없기 때문에

더 높은 크기의 타입으로 변환을 해줘야함(작을 경우 자동 형변환)

public class Practice {
    public static void main(String[] args) {
        int[] numbers= new int[]{1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
        int times = numbers.length;
        int sum = 0;
        for(int i =0; i < times; i++) {
            sum += numbers[i];
        }

        double answer = (double) sum/times; // double을 안써주면 그냥 소숫점 날려서 5.5가 아닌 5.0으로 반환
        System.out.println(answer);

    }
}
  • (변환할 타입)을 앞에 붙여서 변환 가능
  • double은 8byte int 는 4byte이므로 자동변환 X

 

배열에서 인덱스값 정렬

import java.util.Arrays; // 이거 무조건 써줘야 Arrays클래스의 sort 메서드를 사용할 수 있음

public class Practice {
    public static void main(String[] args) {
        int[] numbers = new int[]{2, 1, 4, 3, 5};

        Arrays.sort(numbers);
        // 오름차순으로 정렬

        for (int i = 0; i < numbers.length / 2; i++) {
            //오름차순으로 정렬된 배열에서 왼쪽 오른쪽 양쪽 값들을 서로 가운데 중심으로 바꿔주는 것
            int temp = numbers[i]; // 가운데 기준 왼쪽값을 오른쪽으로 치환하기 위해 임시로 만듬
            numbers[i] = numbers[(numbers.length - 1) - i]; // 오른쪽 값을 왼쪽 값으로 치환
            numbers[(numbers.length - 1) - i] = temp; // 임시변수에 저장한 왼쪽 값을 오른쪽 값으로 치환
        }
        System.out.println(Arrays.toString(numbers));
    }
}

 

Arrays.sort()
오름차순으로 정렬

 

반대로 정렬

  • 배열의 오른쪽 양쪽 값들을 가운데 중심으로 서로 값을 바꾸는 순서
import java.util.Arrays;

public class Practice {
    public static void main(String[] args) {
        String my_string = "MYSTRING";
        String[] stringarray = my_string.split("");
        //String변수를 한 알파벳씩 끊어주기, .toCharArray() 할 수 있지만 순서가 중요하므로 String array 하나로

        for (int i = 0; i < stringarray.length / 2; i++) {
            String temp = stringarray[i];
            stringarray[i] = stringarray[stringarray.length - 1 - i];
            stringarray[stringarray.length - 1 - i] = temp;
        }

        String answer = String.join("", stringarray); // join 메서드를 써서 다 이어 String타입으로
        System.out.println(answer);
    }
}
String.join("(사이에들어갈 문자)", (문자열 여러개 / 문자배열) )
여러개의 문자열 사이에 “”로 지정된 어떤 문자열이 들어가는 메서드
(문자열).split("(자르는 기준이 되는 문자열)")
문자열을 잘라서 String배열로 만드는 메서드
  • String 타입의 문자열을 char 타입처럼 하나하나 split해서 string 배열로 만들고 위와 같이 양 옆의 인덱스 값을 서로 바꿔서 순서를 역순으로 만들어 주는 방법
  • 역순으로 만든 String배열을 다시 String.join매서드를 통해서 다시 붙여줘서 출력

**주의**

  • 만약, String 문자열 안에 정수가 포함되어 있어도 타입은 String 이기 때문에, 오름차순, Array.sort 메서드를 사용할 수 X
  • 반드시 String 문자열의 인덱스 값에 대하여 Integer.parseInt()를 통해서 정수 타입으로 바꿔줘서 오름차순으로 써야함