[TIL 23.01.28] 할쑤 it 다

이승렬·2023년 1월 27일
0

항해99

목록 보기
17/34
post-thumbnail

Q1. 아스키코드 총정리.

출처: https://stepbystep1.tistory.com/10

  • '0' -> 48
  • 'A' -> 65
  • 'a' -> 97

Q2. 탐욕알고리즘.

출처: https://hanamon.kr/%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98-%ED%83%90%EC%9A%95%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98-greedy-algorithm/

Q3. 향상된 for 문

출처: https://java119.tistory.com/107

  1. 사용할 변수는 지역변수로 인식된다. (For문 안에서 사용되기 때문이다.)
  2. 대상은 배열 or 여러 원소를 포함한 자료형이어야 한다.

장점

  1. 간편한, 가독성이 좋은 코드
  2. 배열 인덱스 문제를 해결한다.

단점

  1. 인덱스를 사용하지 못한다.
  2. 배열이나 ArrayList 값을 사용할 수는 있지만, 절대 수정을 할 수 없다.

사용하는 이유

배열처럼 여러 원소로 이루어진 집합의 모든 원소에 대해서 특정 작업을 반복하기 위해서 사용한다.

자주 사용하는 상황

  1. ArrayList 원소 출력
  2. 배열 원소를 출력

cf) 속도와 관련해서는 일반 for 문과 개선된 for 문은 동일하다.

for(자료형 변수명 : 배열명){
	문장
}
for(자료형 한 단계 아래의 자료형의 변수명 : 배열명){
	문장
}

일반 배열 원소 추출하는 예제

String[] arr = {"1-1","1-2","1-3","1-4","1-5"};
 		
for(String s : arr) {
		  
 System.out.println(s);
		  
}

ArrayList string 원소 추출하는 예제

ArrayList<String> arrlist = new ArrayList<String>();
arrlist.add("1-1");
arrlist.add("1-2");
arrlist.add("1-3");
		
for(String s : arrlist) {
			  
  System.out.println(s);
			  
}

Q3. ArrayList 에서 배열로, 배열에서 ArrayList로

출처: https://mommoo.tistory.com/32

ArrayList 에서 배열로 변환


// 01) String ArrayList 를 사용할 경우
ArrayList<String> arrayList = new ArrayList<>();



arrayList.add("Test1");

arrayList.add("Test2");

arrayList.add("Test3");



String[] array = new String[arrayList.size()];

int size=0;

for(String temp : arrayList){

  array[size++] = temp;
  }

// 02) Integer ArrayList 를 배열로 변환할 경우
List<Integer> list = new ArrayList<>();
    list.add(1);
    list.add(2);
    list.add(3);
    
    // 방법 1 -> 반복문을 통해서 각 요소에 접근
    int[] arr1 = new int[list.size()]
    for (int i = 0 ; i < list.size() ; i++) {
        arr1[i] = list.get(i).intValue();
    
    // 방법 2 -> ArrayList 를 스트림으로 변환시킨 후 , map 을 통해서 intStream을 가져오고, 그 후에 toArray() 를 통해서 배열로 만드는 방법.
    int[] arr2 = list.stream()
                .mapToInt(i -> i)
                .toArray();
    
    // 방법 3 -> 위와 거의 비슷한데, intValue 메서드를 통해서 각 요소를 int 형으로 변환.
    int[] arr3 = list.stream()
                .mapToInt(Integer::intValue)
                .toArray();

    // 방법 4 -> 방법 2에서 필터를 추가한 것이다. 이때 이 필터는 리스트의 null 을 걸러내는 방법.
    int[] arr4 = list.stream()
                .filter(i -> i != null)
                .mapToInt(i -> i)
                .toArray();

배열에서 ArrayList 로 변환

String[] array = new String[3];



array[0] = "Test1";

array[1] = "Test2";

array[2] = "Test3";



ArrayList<String> arrayList = new ArrayList<>();

for(String temp : array){

  arrayList.add(temp);

}

Q6. 배열을 String 으로 변환하기

출처: https://allg.tistory.com/16

  1. 배열을 String 으로 변환하는 방법
  • Arrays.toString();
  1. char 배열을 String 으로 변환하는 방법
  • String.valueOf();
  1. String을 char 타입 배열으로 변환하는 방법.
  • toCharArray();

    Q7. 문자열 공백제거 사용법

    출처: https://coding-factory.tistory.com/129

  • 결론적으로 왼쪽, 오른쪽 공백을 지워주는 메서드이다. 하지만 그냥 선언만 해서는 안된다.

    String str = " 문자열에 공백이 있습니다. ";		
    System.out.println(str);

str = str.trim();
System.out.println(str);


- 3번째 줄과 같이 'str =' 처럼 원래 문자열에다가 적용을 시켜주어야 한다.
- 만약 가운데에 공백인 문자열인 경우에는 replace 함수를 적용하면 된다.

### Q8.  possible lossy conversion from double to int

출처: https://ninearies.tistory.com/272

간단하다. double 형을 강제 형변환을 시켜주지 않아서 나오는 에러이다.



### Q9. ArrayList sort 총정리
출처: https://hianna.tistory.com/569

> 1. Collection Sort

``` java
        ArrayList<String> list = new ArrayList<>(Arrays.asList("C", "A", "B", "a"));
        System.out.println("원본 : " + list); // [C, A, B, a]
 
        // 오름차순으로 정렬
        Collections.sort(list);
        System.out.println("오름차순 : " + list); // [A, B, C, a]
 
        // 내림차순으로 정렬
        Collections.sort(list, Collections.reverseOrder());
        System.out.println("내림차순 : " + list); // [a, C, B, A]
 
        // 대소문자 구분없이 오름차순
        Collections.sort(list, String.CASE_INSENSITIVE_ORDER);
        System.out.println("대소문자 구분없이 오름차순 : " + list); // [a, A, B, C]
 
        // 대소문자 구분없이 내림차순
        Collections.sort(list, Collections.reverseOrder(String.CASE_INSENSITIVE_ORDER));
        System.out.println("대소문자 구분없이 내림차순 : " + list); // [C, B, a, A]
  1. List.sort()
    // ArrayList 준비
    ArrayList<String> list = new ArrayList<>(Arrays.asList("C", "A", "B", "a"));
    System.out.println("원본 : " + list);  // [C, A, B, a]

    // 오름차순으로 정렬
    list.sort(Comparator.naturalOrder());
    System.out.println("오름차순 : " + list);  // [A, B, C, a]

    // 내림차순으로 정렬
    list.sort(Comparator.reverseOrder());
    System.out.println("내림차순 : " + list); // [a, C, B, A]
    
    // 대소문자 구분없이 오름차순 정렬
    list.sort(String.CASE_INSENSITIVE_ORDER);
    System.out.println("대소문자 구분없이 오름차순 : " + list); // [a, A, B, C]
    
    // 대소문자 구분없이 내림차순 정렬
    list.sort(Collections.reverseOrder(String.CASE_INSENSITIVE_ORDER));
    System.out.println("대소문자 구분없이 내림차순 : " + list); // [C, B, a, A]

- 그 뒤에 사용자가 정의해서 정렬을 할 수 있는 경우가 있는데, 이는 다음에 알아보자.


### Q10. 문자열을 숫자로 변환!

자꾸 까먹는데, 잘 기억해 놓자.

> 문자열을 숫자로

Integer.parseInt("문자열")
Double.parseDouble("문자열")


### Q11. ArrayList 이중배열
출처: https://devyoseph.tistory.com/148

다음과 같은 예시를 보면서 익혀보자.

``` java
import java.util.ArrayList;
public class Main {
public static void main(String[] args) {

	 ArrayList<Integer>[] arr = new ArrayList[100]; //0번~99번 index
     
	 for(int i=0; i<100;i++) {
		 arr[i]=new ArrayList<Integer>(); //배열 원소를 인스턴스로 지정한다
	 }
}}

// 출력 부분
import java.util.ArrayList;
public class Main {
public static void main(String[] args) {
	 ArrayList<Integer>[] arr = new ArrayList[100];
	 for(int i=0; i<100;i++) {
		 arr[i]=new ArrayList<Integer>();
	 }
	 arr[0].add(1); // [0]번 인덱스에 1을 추가했다
	 arr[3].add(2); // [3]번 인덱스에 2을 추가했다
     
	 for(int i=0; i<100;i++) { //출력: 0~99[index] 범위를 출력
		 for(int j=0; j<arr[i].size();j++) { //[0]~[해당 list의 크기-1] 범위 출력
			 System.out.println(arr[i].get(j));
		 }
         //1과 2가 출력된다
	 }
}}

Q12. Math.pow (a,b)

출처: http://mwultong.blogspot.com/2007/03/java-raise-power-pow.html

a == 밑, b == 지수

둘이 합치면 미지수? ㅋㅋ

Q13. 정규표현식 문법

출처: https://page-view.tistory.com/10


// boolean matches(String regex) => 매칭 여부 확인

ex) "abc".matches("[a-z]"); => true // (a부터 z 까지에 알파벳중에서 다 매칭이 되는지 여부)

// String replaceAll(String regex, String replacement) => 매칭되는 값 변경

ex) "abc123".replaceAll("[a-z]", "*"); => ***123 // (매칭이 되면 값을 변경한다.

// String[] split(String regex)
ex) "123b456".split("[a-z]"); => ["123","456"] // 만약 정규식에서 걸리는 것이 있으면 그것으로 스플릿 해줘

Q14. indexOf 특)

출처: https://mine-it-record.tistory.com/124

  • 특정 문자나 문자열이 앞에서부터 처음 발견되는 인덱스를 반환 (문자열도 가능)
  • 이때 찾지 못했을 경우 -1 을 반환
profile
Backend_Developer

0개의 댓글