Notice
Recent Posts
Recent Comments
Link
«   2024/09   »
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
Tags more
Archives
Today
Total
관리 메뉴

ultra_dev

문자열.단어뒤집기 본문

알고리즘

문자열.단어뒤집기

ultra_dev 2023. 1. 12. 01:31

4. 단어 뒤집기

설명

N개의 단어가 주어지면 각 단어를 뒤집어 출력하는 프로그램을 작성하세요.

입력

첫 줄에 자연수 N(3<=N<=20)이 주어집니다.

두 번째 줄부터 N개의 단어가 각 줄에 하나씩 주어집니다. 단어는 영어 알파벳으로만 구성되어 있습니다.

출력

N개의 단어를 입력된 순서대로 한 줄에 하나씩 뒤집어서 출력합니다.

예시 입력 1

3
good
Time
Big

예시 출력 1

doog
emiT
giB

📌 StringBuilder().reverse().toString(); 활용

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

class Main{
    public ArrayList<String> solution(int n, String[] str) {
        ArrayList<String> answer = new ArrayList<>();
        for(String x : str){
            String tmp = new StringBuilder(x).reverse().toString();   
						//StringBuilder의 기능들 알아보기 ! 그 후 String으로 다시 변환
            //String은 수정 추가 이런거 불가. 아예 새로운 객체를 만들어버림 
					//하지만 StringBuilder는 동일 객체로 이것저것 다 가능!
            //따라서 메모리나 무게 면에서 이득! 나중에 toString으로 String화 시키면 됨
            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 y : T.solution(n, str)){
            System.out.println(y);
        }

    }
}

📌 .toCharArray();

  • lt,rt 개념 활용 → while(lt<rt)
import java.util.ArrayList;
import java.util.Scanner;

class Main{
    public ArrayList<String> solution(int n, String[] str) {
        ArrayList<String> answer = new ArrayList<>();
        for(String x : str){
            char[] s = x.toCharArray();     //x에 있는 걸 글자별로 끊어서 배열 만들어주는!!
            //study라고 치면 01234 순서고. lt(왼쪽끝)이 0번 s, rt(오른쪽끝)은 4번 y
            //이렇게 양끝을 계속 바꿔가는 것. 0과4 이후 1,3이 (lt,rt)고 또 바꾸고 하나 남은건 중앙이니 안바꾸는 것
            int lt = 0, rt = x.length()-1;
	       ⭐ while(lt<rt){        //<- 마지막에 가운데쯤 바꾸면 lt>rt상태일테니 거짓이되는 것
                char tmp = s[lt];
                s[lt]=s[rt];
                s[rt]=tmp;
                lt ++;
                rt --; ⭐
            }   ///11~17번째까지 알고리즘정도는 숙지해놔야 함!!!
            String tmp = String.valueOf(s);
            //valueOf는 static으로 선언된 메소드라 String 클래스.valueOf()로 실행 가능
            //String화 시켜 주는!
            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 y : T.solution(n, str)){
            System.out.println(y);
        }

    }
}

'알고리즘' 카테고리의 다른 글

문자열.유효한 팰린드롬  (0) 2023.01.12
문자열.문장 속 단어(indexOf(),substring())  (0) 2023.01.12
문자열.회문문자열  (0) 2023.01.12
문자열.중복문자제거  (0) 2023.01.12
문자열.대소문자  (0) 2023.01.12
Comments