[Java] 알고리즘 - 문자,문자열,숫자

이해찬·2023년 6월 19일

항해일지

목록 보기
11/35

23.06.19 - D+19, 알고리즘 - 문자,문자열, 숫자

기록양식 (TIL)
1. 사용 개념
2. 의문점 or 문제
3. 시도해 본 것들(+응용) or 삽질
4. 해결
5. 알게 된 점(회고)

1. 개념

  • split() 활용하여 문자를 배열로 만들기
  • toUpperCase() toLowerCase()로 대소문자 변환
  • Type.tostring() 활용하여 숫자를 문자열로 바꾸기
  • Type.parseType() 으로 타입변환 출력
  • valueOf() 문자로 변환
  • Array.sort(arr, Collections.reverseOrder()) 내림차순으로 정렬
  • join( , )으로 배열을 문자열로

2. 문제

2-1. 이상한 문자 만들기

💻 해결

class Solution {
    public String solution(String s) {
        String answer = "";
        String[] sArr = s.split("");
        
        int index = 0;
        
        for(int i=0; i<sArr.length; i++){
            if(sArr[i].equals(" ")){
                index = 0;
                answer += " ";
                continue;
            }
            if(index%2==0){
                answer += sArr[i].toUpperCase();
                index++;
            } else {
                answer += sArr[i].toLowerCase();
                index++;
            }
        }
        return answer;
    }
    
}
  1. String[] sArr = s.split(""); > (" ") 공백을 주면 공백을 기준으로 단어들이 나열되고, ("") 공백이 없으면 단어배열들의 한 글자씩(공백 포함) 나눈다.
  2. 스트링 s를 배열로 만든 뒤, 그 배열 속에서 if(sArr[i].equals(" ")) continue; 공백이 있다면 공백을 추가하고 계속
  3. 그 배열 속에서 홀수와 짝수를 각각 나누어서 대문자 소문자로 변환
  4. sArr[i] 번째의 인덱스와 홀수,짝수를 판별하는 인덱스가 일치해야하니 똑같이 index를 0으로 설정한 뒤에 i와 같이 ++ 되게 설정

2-2. 자연수 뒤집어 배열로 만들기

💻 해결

class Solution {
    public int[] solution(long n) {
        
        String s = String.valueOf(n);
        int[] answer = new int[s.length()];
        
        String[] arr = s.split("");
        
        for(int i=arr.length-1; i>=0; i--){
            answer[arr.length-1-i] = Integer.parseInt(arr[i]);
        }
        
        return answer;
    }
}
  1. 자연수 n을 배열의 내림차순으로 정렬
  2. Long.tostring or valueOF를 사용해서 숫자를 스트링으로 변환
  3. 배열에 스트링 길이를 넣고, 각 배열을 문자별로 split
  4. 순서대로 0에서 커지는게 아니라, 0으로 작아지게 for 작성
    for(int i=arr.length-1; i>=0; i--)

Long.toString(n)은 long 타입의 값만을 문자열로 변환하는 데 특화되어 있고, String.valueOf(n)은 모든 타입의 값을 문자열로 변환하는 데 사용할 수 있습니다. 따라서 어떤 메서드를 사용할지는 상황에 따라 결정


2-3. 자릿수 더하기

💻 해결

import java.util.*;

public class Solution {
    public int solution(int n) {
        int answer = 0;

        String s = Integer.toString(n);
        String[] arr = s.split("");
        
        
        for(int i=0; i<arr.length; i++){
            answer += Integer.parseInt(arr[i]);
        }

        return answer;
    }
}
  1. 자연수를 자릿수별로 나누어 배열 > 총 합
  2. toString으로 문자열로 변환 뒤, split으로 배열 만들기
  3. for 반복문을 돌면서 Integer.parseInt(arr[i]) 배열의 각 i번째를 int 으로 변환한 뒤 총 합

2-4. 정수 내림차순으로 배치

💻 해결

import java.util.*;

class Solution {
    public long solution(long n) {
        long answer = 0;
        
        String s = String.valueOf(n);
        String[] arr = s.split("");
        
        Arrays.sort(arr, Collections.reverseOrder());
        String s1 = String.join("", arr);
        
        // Arrays.sort(arr, Collections.reverseOrder());
        // String s1 = "";
        // for(int i=0; i<arr.length; i++){
        //     s1 += arr[i];
        // } >> 각 배열의 문자를 더해 문자열도 가능
        
        answer = Long.parseLong(s1);
        
        return answer;
    }
}
  1. 정수를 valueOf 스트링으로 변환 > split을 통해 배열
  2. valueOf or Long.toString를 사용해 Arrays.sort(arr, Collections.reverseOrder());내림차순으로 정렬
  3. 정렬한 arr배열을 String.join("",arr) 공백없이 문자열로 변환
  4. 변환한 문자열을 최종적으로 long.parseLong으로 출력
    3-String.join

5. 알게된 점

  • 숫자를 각 자릿수 별로 나누기 위해서 toString valueOf를 사용해서 변환 가능
  • split을 통해 단어를 공백을 기준으로 나눌 수 있고, 한 글자씩 나눌 수도 있음
  • Type.parseType을 통해 최종적으로 숫자로 출력 가능
  • String.join()을 통해 배열을 하나의 스트링으로 출려 가능

Java - 배열 정렬(Sorting) (오름차순, 내림차순)
완벽정리! 자바 문자열 배열을 문자열로 합치는 방법
[JAVA] 문자를 숫자로, 숫자를 문자로 변환하는 방법 toString, parseInt

profile
디자인에서 개발자로

0개의 댓글