String(문자열) - 4. 단어 뒤집기

2023. 7. 6. 22:19·알고리즘/String(문자열)

1. 문제

N개의 단어 뒤집기.

 

2 - 1. 내 풀이

1. 입력받을 단어 수 N, 하나씩 Srting 배열에 저장

2. String 배열 요소들을 직접 뒤집기

3. 뒤집은 String 변수 개행 출력

 

2 - 2 내 코드

import java.util.Scanner;

public class String04 {
    public static void printRev(String str) {
        char[] ch = str.toCharArray();  	//String을 char형 배열로 변환
        for (int i = 0; i < ch.length; i++) {
            System.out.print(ch[ch.length-i-1]); // String을 char로 접근하여 맨 뒤부터 출력
        }
        System.out.println(); //개행
    }

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int num = sc.nextInt();

        String[] strArr = new String[num];
        for (int i = 0; i < strArr.length; i++) {
            strArr[i] = sc.next();
        }

        for (int i = 0; i < strArr.length; i++) {
            printRev(strArr[i]);
        }
    }
}

약간 야매 같은 느낌이라 찝찝하다.

 

3 - 1 강의 풀이

1. ArrayList 사용

2. StringBuilder 사용

String 클래스의 메서드를 사용하면 새로운 객체가 생성되는데 StringBuilder는 기존의 변수가 변경되는것이라 메모리상에서 효율적.

 

3 - 2 강의 코드

import java.util.ArrayList;
import java.util.Scanner;

public class String04 {
    public static ArrayList<String> solution(int n, String[] strArr) {
        ArrayList<String> answer = new ArrayList<String>();
        for (String x : strArr) {
            String tmp = new StringBuilder(x).reverse().toString();
            //StringBuilder타입이므로 toString이 필수임!
            //new StringBuilder(String 타입 변수); 하면 StringBuilder형 변수 생성후 이를 toString하는 것
            answer.add(tmp);
        }


        return answer;
    }

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int num = sc.nextInt();

        String[] strArr = new String[num];
        for (int i = 0; i < strArr.length; i++) {
            strArr[i] = sc.next();
        }

        for (String x : solution(num, strArr)) {
        //향상된 for문 오른쪽에는 큰 틀이 나오는데, ArrayList형 answer를 반환하는 solution메서드 사용
            System.out.println(x);
        }
    }
}

 

4 - 1 추가 코드

import java.util.Scanner;

public class String04 {
    public static void printRev(String str) {
        char[] ch = str.toCharArray();
        for (int i = 0; i < ch.length / 2; i++) { //배열의 요소를 거꾸로 뒤집는 알고리즘
            char tmp1 = ch[i];
            ch[i] = ch[ch.length - i - 1];
            ch[ch.length -  i - 1] = tmp1;
        }
        String tmp2 = String.valueOf(ch); //char형 배열을 String으로 변환
        System.out.println(tmp2);
    }

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int num = sc.nextInt();

        String[] strArr = new String[num];
        for (int i = 0; i < strArr.length; i++) {
            strArr[i] = sc.next();
        }

        for (int i = 0; i < strArr.length; i++) {
            printRev(strArr[i]);
        }
    }
}

 위 코드와 내 코드의 다른 점.

나는 toCharArray(); 메서드 이후 한 단어의 맨 뒤부터 print로 출력하고 개행함.

 

위 코드는 간단한 알고리즘을 사용해 단어를 뒤집음

 

StringBuilder

String input = "reverse";
StringBuilder sb = new StringBuilder(input);
String output = sb.reverse().toString();
System.out.println("출력: " + output);
//출력: esrever

 

5. 얻어갈 점.

1. String을 char배열로 바꿔주는 toCharArray() 메서드 복습

2. StringBuilder 클래스 사용

3. 향상된 for문의 배열명에 함수를 사용할 수 있다는 점.

대신 해당 함수가 배열을 반환해야함.

4. char 배열을 String으로 바꿔주는 String 클래스의 valutOf()메서드

'알고리즘 > String(문자열)' 카테고리의 다른 글

String(문자열) - 7. 회문 문자열  (0) 2023.07.20
String(문자열) - 6. 중복 문자 제거  (1) 2023.07.20
String(문자열) - 5. 특정 문자 뒤집기  (1) 2023.07.12
String(문자열) - 3. 문장 속 단어  (1) 2023.06.30
String (문자열) - 문자 찾기, 대소문자 변환  (0) 2023.06.28
'알고리즘/String(문자열)' 카테고리의 다른 글
  • String(문자열) - 6. 중복 문자 제거
  • String(문자열) - 5. 특정 문자 뒤집기
  • String(문자열) - 3. 문장 속 단어
  • String (문자열) - 문자 찾기, 대소문자 변환
koreaioi
koreaioi
  • koreaioi
    koreaioi
    koreaioi
  • 글쓰기 관리
  • 전체
    오늘
    어제
    • 분류 전체보기 (162) N
      • JAVA (3)
      • 알고리즘 (88)
        • 백준 (11)
        • String(문자열) (12)
        • Array(1, 2차원 배열) (13)
        • Two pointers, Sliding windo.. (6)
        • HashMap, TreeSet(해쉬, 정렬지원 S.. (5)
        • Stack, Queue(자료구조) (8)
        • Sorting and Searching(정렬, 이.. (10)
        • Recursive, Tree, Graph(DFS,.. (14)
        • DFS, BFS 활용 (6)
        • 다시 시작! (1)
        • 기초 수학 (1)
      • 일상 (22)
      • Github (1)
      • MSA 공부 (4)
      • 경제, 금융, 디지털, 시사 (3)
      • 라즈베리파이 (10)
      • 프로젝트에서 일어난 일 (18)
      • FrontEnd 공부 (9)
        • React (8)
      • Spring (2)
      • 기술 세미나 (1)
      • DB (1) N
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.3
koreaioi
String(문자열) - 4. 단어 뒤집기
상단으로

티스토리툴바