Post

String_단어 뒤집기_stringBuffer, ArrayList, toCharArray, String.valueOf

✅ 문자를 그냥 뒤집기만 하기

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
package com.example.ct_inflean_2024.String;
import java.util.Scanner;

class Main {
    public String solution(String str){
        String answer= "";
        String[] strArr= str.split("");
        for(int i= strArr.length -1; 0<= i; i--){
            answer += strArr[i];
        }
        return answer;
    }
    public static void main(String[] args){
        Main T = new Main();
        Scanner sc = new Scanner(System.in);
        String str = sc.nextLine();
        System.out.println(T.solution(str));
    }

}


//⭐️input:
// Time
//⭐️output:
// emiT

🔴 TroubleShooting

처음에 for문을 돌릴 때 int i= strArr.length; 라고 해서
non-zero exit value 1가 떴다. 이 문제가 발생한 이유는
예를 들어 길이기 5인 배열이면 index가 0~4ㅅ까지인데 인덱스가 5인 값을 찾으려고 했기 때문이다.
int i= strArr.length -1;이라고 수정해주니 문제가 해결되었다.

✅ N개의 단어가 주어지면 각 단어를 뒤집어 출력

첫 줄에 자연수 N(3<=N<=20)이 주어집니다.
두 번째 줄부터 N개의 단어가 각 줄에 하나씩 주어집니다. 단어는 영어 알파벳으로만 구성되어 있습니다.

🟢 여러줄 입력받고 출력_StringBuffer.reverse 사용

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
class Main {
    public ArrayList<String> solution(int n, String[] str){
        ArrayList<String> answer= new ArrayList<>();
        for(String x: str){
            StringBuffer sb= new StringBuffer(x);
            String a= sb.reverse().toString();
            answer.add(a);

        }
        return answer;
    }
    public static void main(String[] args) {
        Main T = new Main();
        Scanner sc= new Scanner(System.in);
        int n= sc.nextInt();
        String[] str= new String[n];
        for(int i=0; i<n; i++){
            str[i]= sc.next();
        }
        for(String x: T.solution(n, str)){
            System.out.println(x);
        }


    }

}

//⭐️input:
// 3
// good
// Time
// Big
//⭐️output:
// doog
// emiT
// giB

✅ 특정 문자끼리 바꿔서 출력하기

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
class Main {
    public ArrayList<String> solution(int n, String[] str){
        ArrayList<String> answer= new ArrayList<>();
        for(int i=0; i< str.length; i++){
            char[] charArr= str[i].toCharArray();
            int lt=0;
            int rt= charArr.length-1;
            while( lt < rt ){
                char tmp= charArr[lt];
                charArr[lt] = charArr[rt];
                charArr[rt] = tmp;
                lt++;
                rt--;
            }
//            String charToStr= new String(charArr);
//            str[i] = charToStr;
//            answer.add(str[i]);
            String tmp= String.valueOf(charArr);
            answer.add(tmp);
        }
        return answer;
    }
    public static void main(String[] args) {
        Main T = new Main();
        Scanner sc= new Scanner(System.in);
        int n= sc.nextInt();
        String[] str= new String[n];
        for(int i=0; i<n; i++){
            str[i]= sc.next();
        }
        for(String x: T.solution(n, str)){
            System.out.println(x);
        }


    }

}

코딩공책-24

  1. 받은 str배열안에 들어있는 str을 반복문을 사용해 charArray로 바꿔준다. .toCharArray();
  2. 그러면 이제는 배열이니까 각 char들을 바꿀 수 있다.
  3. 배열 순서 [0]은 lt, 가장 마지막은 rt로 하고 그 char끼리 바꾼다.
  4. lt++, rt– 해서 각각 하나씩 늘리고 줄여서 그 다음 char끼리 바꾼다.
  5. 이제 바꾼 charArr를 stringArray에 넣어주어야 하므로 String.valueOf(charArr);를 사용하여 string을 만든다.
  6. ArrayList에 string을 .add(tmp);

🔵 ThingsILearned

✔️ charArr to String then add to ArrayList

  1. charrArr을 valueOf를 사용해 String으로 바꾼다.
  2. ArrayList에 값을 추가하기 위해서는 .add()를 쓴다.

✔️ 여러줄 scanner

  1. 먼저 몇 줄 입력받을지 그 숫자를 sc.nextInt()를 사용해 입력받는다.
  2. 다음 String 배열을 하나 만들고 그 배열의 크기는 방금 알아낸 숫자 크기만큼 한다.
  3. 이제 반복문을 돌면서 String의 첫 번째 인덱스부터 sc.next()를 사용해 입력받은 string을 넣는다.

✔️ StringBuffer.reverse.toString

StringBuffer은 새로운 값이 추가되어도 새로운 객체를 생성하지 않고 이미 있는 객체에 더해진 값만 추가할 수 있다.
StringBuffer is thread safe compared to String Builder.

따라서 RAM을 많이 잡아먹지 않아 효율적이다.
StringBuffer의 다양한 메소드
append, insert(특정 위치에 삽입), delete, reverse, replace, subString(return new string), charAt, length

This post is licensed under CC BY 4.0 by the author.