컴공생의 발자취

[ 99클럽 코테 스터디 6일차 TIL ] 자바 char 배열 정렬 (Sorting) 및 형변환 (char Array to String && Array to String) 본문

💡 코테/99클럽

[ 99클럽 코테 스터디 6일차 TIL ] 자바 char 배열 정렬 (Sorting) 및 형변환 (char Array to String && Array to String)

MNY 2024. 4. 2. 23:13
728x90
반응형
💡 오늘의 학습 키워드

- 자바 char 배열 정렬 (Sorting)
- 형변환
    * char Array to String
    * Array to String

 

자바 char 배열 정렬

: 알파벳의 아스키 값을 비교하여 오름차순으로 정렬한다.

* sort() 함수를 사용하기 위해서는 import java.util.Arrays;를 해줘야 한다.

* char 타입의 배열일 경우, Collections.reverseOrder()은 타입 에러로 사용 불가!

    -> 대신 for문을 사용해서 뒤집어 줄 수 있음

import java.util.Arrays;

char[] arr = {'a', 't', 'b', 'c'};
Arrays.sort(arr);

System.out.println(Arrays.toString(arr));

// result : [a, b, c, t]

 

형변환

* char Array to String : char 배열을 문자열로 변환하기

  • String.vlaueOf()
char[] arr = {'a', 'b', 'c'};
String str = String.vlaueOf(arr);

System.out.println(str);

// result : abc

 

  • new String()
char[] arr = {'a', 'b', 'c'};
String str = new String(arr);

System.out.println(str);

// result : abc

 

* Array to String : 배열을 문자열로 변환하기

  • Arrays.toString()

* 사용하기 위해서는 import java.util.Arrays;를 해줘야 한다.

char[] arr = {'a', 'b', 'c'};
String str = Arrays.toString(arr);

System.out.println(str);

// result : [a, b, c]

 

* char Array to String vs. Array to String 

  • char Array to String : {'a', 'b', 'c'} -> "abc" 우리가 생각하는 문자열로 변경
  • Array to String : {'a', 'b', 'c'} -> [a, b, c] 리스트 형식의 문자열로 변경
 

 

오늘의 회고

문제1  : [음양 더하기]

  • 어떤 문제가 있었고, 나는 어떤 시도를 했는지

입력값으로 자연수 배열과 그 자연수가 음수인지, 양수인지에 대한 정보를 담고 있는 배열을 가지고 모두 더했을 때의 총합을 리턴하는 문제였다.

 

문제가 쉬워서 분석 후 코드로 작성하고 바로 풀었다.

 

  • 어떻게 해결했는지
// absolutes = 자연수
// signs = absolutes의 음수, 양수

// answer = 0 초기화
// absolutes의 길이 만큼 반복
    // true일 경우(양수) answer += absolutes[i] (더하기)
    // false일 경우(음수) answer -= absolutes[i] (빼기)

// result : 입력된 수의 음수, 양수 판별 후 총합

class Solution {
    public int solution(int[] absolutes, boolean[] signs) {
        int answer = 0;
        for (int i = 0; i < absolutes.length; i++) {
            if (signs[i] == true)
                answer += absolutes[i];
            else 
                answer -= absolutes[i];
        }
        return answer;
    }
}

 

문제2  : [문자열 내림차순으로 배치하기]

  • 어떤 문제가 있었고, 나는 어떤 시도를 했는지

문제 그대로 입력된 문자열을 내림차순으로 정렬 후 리턴해주는 게 문제였다.

단, 대문자는 소문자 보다 작은 것으로 간주한다.

 

입력된 값이 문자열이라서 배열로 변환한 후 sort() 함수를 사용하면 되겠다고 생각했다.

하지만, 내가 만든 배열의 타입이 char이기에 Colletions.reverseOrder()을 사용하려면 Object? 타입이었나?

타입이 맞지 않아서 sort() 함수만 사용할 수 있었다.

 

그래서 그냥 배열의 뒷쪽부터 하나씩 문자열로 타입을 변경해준 후 리턴할 문자열에 넣어줬다.

 

  • 어떻게 해결했는지
// 문자열 char 배열로 바꾸기
// 배열 정렬 sort() 내림차순
// 정렬된 배열 다시 문자열로 바꾸기

// result : 문자열 내림차순
// 단, 대문자는 소문자보다 작은 것으로 간주

import java.util.Arrays;
import java.util.Collections;

class Solution {
    public String solution(String s) {
        String answer = "";
        char[] charArray = s.toCharArray();
        Arrays.sort(charArray);
        for (int i = s.length() -1 ; i >= 0 ; i--) {
            answer += String.valueOf(charArray[i]);
        }
        
        return answer;
    }
}

 

  • 무엇을 새롭게 알았는지

배열 정렬과 char 배열을 문자열로 변경하는 방법에 대해 알게 되었다.

특히나 배열을 정렬 할 때, char타입일 경우 Collections.reverseOrder() 함수는 사용이 불가능하다는 걸 알았고

이를 해결하기 위해 for문을 이용하거나 다르게 사용해야 한다는 걸 깨달았다?

마지막으로 오늘도 어김없이 형변환 함수에 대해 습득했다.

추후에 자바에서 자주 사용하는 형변환 함수만 따로 정리해둬야겠다.

 

내일 학습할 것은 무엇인지

  • 빅분기 자격증 공부!!!
  • 클럽99 코딩테스트

 

 

728x90
반응형