티스토리 뷰

4. 단어 뒤집기
- N개의 단어가 주어지면 각 단어를 뒤집어 출력하는 프로그램을 작성
- 첫 줄에 자연수 N(3<=N<=20) 입력
- 두 번째 줄부터 N개의 단어가 각 줄에 하나씩 작성
- 단어는 영어 알파벳으로만 구성되어 있습니다.
- N개의 단어를 입력된 순서대로 한 줄에 하나씩 뒤집어서 출력합니다.

 

방법 1.

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

public class Main {

    public static String solution(String keyword){
       String answer = new StringBuilder(keyword).reverse().toString();
       return answer;
    }

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

        for(int i=0;i<n;i++){
            str[i] = solution(sc.next());
        }

        for(String x : str){
            System.out.println(x);
        }
    }
}

 

방법 2.

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

public class Main {

    public static String solution(String str){
        String answer= "";
        char[] strAry = str.toCharArray();
        int start =0, end=str.length()-1;
        
        while (start < end){
            char temp = strAry[start];
            strAry[start] = strAry[end];
            strAry[end] =temp;
            start++;
            end--;
        }

        answer = String.valueOf(strAry);
        return answer;
    }

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

        for(int i =0;i<cnt;i++){
            keyword[i] =solution(sc.next());
        }

        for(String x : keyword){
            System.out.println(x);
        }
    }
}

 

 

 

5. 특정 문자 뒤집기
- 영어 알파벳과 특수문자로 구성된 문자열이 주어지면 영어 알파벳만 뒤집고,
특수문자는 자기 자리에 그대로 있는 문자열을 만들어 출력하는 프로그램을 작성
 
import java.util.Scanner;


public class Main {

    public static String solution(String str){
        String answer;
        char[] strAry = str.toCharArray();
        int lt =0, rt=str.length()-1;

            while (lt < rt){
                if(!Character.isAlphabetic(strAry[lt])) lt++;
                else if(!Character.isAlphabetic(strAry[rt])) rt--;
                else {
                    char temp = strAry[lt];
                    strAry[lt] = strAry[rt];
                    strAry[rt] = temp;
                    lt++;
                    rt--;
                }
            }
        answer = String.valueOf(strAry);

            return answer;
    }

    public static void main(String[] args){

        Scanner sc = new Scanner(System.in);
        System.out.println(solution(sc.next()));
    }
}

 

 

 

6. 중복문자 제거

- 소문자로 된 한개의 문자열이 입력되면 중복된 문자를 제거하고 출력하는 프로그램을 작성

- 중복이 제거된 문자열의 각 문자는 원래 문자열의 순서를 유지

import java.util.Scanner;


public class Main {

    public static String solution(String str){
        String answer ="";

        for(int i=0; i<str.length(); i++){
            //System.out.println(str.charAt(i) + " // " + str.indexOf(str.charAt(i)) );
            if(str.indexOf(str.charAt(i)) == i ) answer+= str.charAt(i);

        }


            return answer;
    }

    public static void main(String[] args){

        Scanner sc = new Scanner(System.in);
        System.out.println(solution(sc.next()));
    }
}

 

 

 

 

7. 회문 문자열
- 앞에서 읽을 때나 뒤에서 읽을 때나 같은 문자열을 회문 문자열이라고 함
- 문자열이 입력되면 해당 문자열이 회문 문자열이면 "YES", 회문 문자열이 아니면 “NO"를 출력하는 프로그램을 작성

(단 회문을 검사할 때 대소문자를 구분 x)

 

방법 1.

import java.util.Scanner;


public class Main {

    public static String solution(String str){
       String answer = "YES";
       str = str.toUpperCase();

        for(int i =0; i<len/2; i++){
            if(str.charAt(i) !=  str.charAt(len-i-1)) return "NO" ;
        }

        return answer;
    }

    public static void main(String[] args){

        Scanner sc = new Scanner(System.in);
        System.out.println(solution(sc.next()));
    }
}

 

 

방법 2.

import java.util.Scanner;


public class Main {

    public static String solution(String str){
        String answer = "YES";
        String strReverse = new StringBuilder(str).reverse().toString();

        if(!str.equalsIgnoreCase(strReverse)) answer="NO";

        return answer;
    }

    public static void main(String[] args){

        Scanner sc = new Scanner(System.in);
        System.out.println(solution(sc.next()));
    }
}

 

 

 

8. 유효한 팰린드롬

- 앞에서 읽을 때나 뒤에서 읽을 때나 같은 문자열을 팰린드롬이라고 합니다.

- 문자열이 입력되면 해당 문자열이 팰린드롬이면 "YES", 아니면 “NO"를 출력하는 프로그램을 작성하세요.

- 단 회문을 검사할 때 알파벳만 가지고 회문을 검사하며, 대소문자를 구분하지 않습니다.

- 알파벳 이외의 문자들의 무시합니다.

 

import java.util.Scanner;


public class Main {

    public static String solution(String str){
        String answer = "NO";
        str = str.toUpperCase().replaceAll("[^A-Z]","");
        String strReverse = new StringBuilder(str).reverse().toString();

        if(str.equalsIgnoreCase(strReverse)) answer="YES";
        
        return answer;
    }

    public static void main(String[] args){

        Scanner sc = new Scanner(System.in);
        System.out.println(solution(sc.nextLine()));
    }
}

 

 

'코테공부' 카테고리의 다른 글

[코테공부] Stack, Queue (1)  (0) 2023.07.10
[코테공부] HashMap, HashSet, TreeSet  (0) 2023.06.20
[코테공부] String 문자열3  (0) 2023.01.11
[코테공부] String 문자열 문제  (0) 2023.01.04
댓글
최근에 올라온 글
최근에 달린 댓글
링크
Total
Today
Yesterday