String(문자열) 섹션 - (1)

728x90

String(문자열) 섹션 - (1) 

1-1. 문자 찾기

한 개의 문자열을 입력받고, 특정 문자를 입력받아 해당 특정문자가 입력받은 문자열에 몇 개 존재하는지 알아내는 프로그램을 작성하세요.

// 섹션 1-1 문자 찾기 
//한 개의 문자열을 입력받고, 특정 문자를 입력받아 해당 특정문자가 입력받은 문자열에 몇 개 존재하는지 알아내는 프로그램을 작성하세요.

//대소문자를 구분하지 않습니다.문자열의 길이는 100을 넘지 않습니다.

//입력 : 첫 줄 문자열 , 두 번째줄 문자 입력
//출력 : 첫 줄의 문자열 속에서 두 번째 '문자' 포함된  [문자 개수]를 출력한다.

public class Main {    
    //솔루션 함수 (문자열, 문자) => 포함 개수 리턴 
    public int solution(String str, char t) {
        int answer = 0;

        //대소문자 구분 X => 하나의 문자로 통일 시켜놓고
        str = str.toUpperCase();
        t = Character.toUpperCase(t);

        //이제 실질적 카운팅
        for(int i = 0 ; i <str.length(); i++) {
            if(str.charAt(i) == t) {
                answer++;
            }
        }
        return answer;
    }

    //실행 메인 
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Main T = new Main();

        Scanner kb = new Scanner(System.in);
        //1) 문자열 입력
        String str = kb.next();
        //2) 문자 입력 
        char c = kb.next().charAt(0); //한 문자 가져오기

        //솔루션 리턴값 출력
        System.out.println(T.solution(str, c));
    }

}

1-2. 대소문자 변환

대문자와 소문자가 같이 존재하는 문자열을 입력받아 대문자는 소문자로 소문자는 대문자로 변환하여 출력하는 프로그램을 작성하세요.

// 1-2. 대소문자 변환
/*
 *  설명 ; 대소문자 혼합 존재 문자열 입력 받고 
 *  대 -> 소, 소 -> 대 변환시켜 출력시키는 프로그램 작성하라
 *  
 *  입력 : 첫 줄 문자열 입력, (길이 100이하, 영어로만 구성)
 *  출력 : 첫 줄에 변환된 문자열 출력 
 *
 * */

public class Main2 {    
    //솔루션 함수 
    public String solution(String str) {
        String answer = "";
        // toCharArray : String -> char 배열로 만듬
        for(char x : str.toCharArray()) {
            //각각의 요소 대소문자 구분시켜서 바꿔주기

            //1) 소문자이면 => 대문자로 변경
            if(Character.isLowerCase(x)) answer += Character.toUpperCase(x);

            //2) 대문자이면 => 소문자로 변경
            else answer += Character.toLowerCase(x);
        }

        return answer;
    }

    //실행 메인 (입력 애들 세팅, 출력)
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Main2 T = new Main2();
        //입력 규격 맞추기 
        Scanner kb = new Scanner(System.in);
        String str = kb.next();

        //곧장 출력
        System.out.println(T.solution(str));
    }

}

1-3. 문장 속 단어 - (1) 풀이 : split () 활용

한 개의 문장이 주어지면 그 문장 속에서 가장 긴 단어를 출력하는 프로그램을 작성하세요.

문장속의 각 단어는 공백으로 구분됩니다.

/* 1-3. 문장 속 단어 
 * 
 *  설명 : 한 문장 주어지면, 해당 무낭 속 가장 긴 단어 출력 프로그램 작성 
 *  
 *  입력 : 첫 줄에 문장 1개 입력 (100 이하. 알파벳구성)
 *  
 *  출력 : 첫 줄에 가장 긴 단어 출력 (긴 단어 여러 개인 경우, 더 앞쪽에 위치한 단어 우선)
 * */

public class Main3 {

    //솔루션 함수 
    public String solution(String str) {
        String answer = "";

        //카운팅 Max 값에 우선 가장 작은 값 초기화
        int M = Integer.MIN_VALUE;

        // 문장 속 공백 기준 단어 자르기 추출 : split()
        String[] s = str.split(" ");

        for(String x : s) {
            //각 [] 속 단어 길이 측정
            int len = x.length();
            // 카운팅 M보다 더 큰 길이 발견 시
            if(len > M) {
                M = len; // 더 큰 길이 M으로 갱신
                answer = x; //정답도 갱신
            }
        }
        return answer;
    }

    //실행 메인 (입력 애들 세팅, 출력)
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Main3 T = new Main3();
        //입력 규격 맞추기 
        Scanner kb = new Scanner(System.in);
        // 입력 : 공백 포함한 라인 전체를 입력받아야 하므로 
        String str = kb.nextLine();

        // 곧장 출력
        System.out.println(T.solution(str));
    }
}

1-4. 단어 뒤집기 -(2) : 직접 reverse() 구현

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

/*
 *  1-4. 단어 뒤집기 
 *  설명 : N개 단어 주어지면 각 단어 뒤집어 출력 프로그램
 *  
 *  입력 : 첫 줄에 자연수 N개(<=20) 주어짐 
 *      둘째 줄부터 N개의 단어를 각 줄에 하나씩 입력. (단 영어로만 구성)
 *  
 *  출력 : N개 단어 입력한 순서대로 한 줄에 하나씩 뒤집어서 출력 
 * */

public class Main4 {
    //솔루션 함수 
    public ArrayList<String> solution(int n, String[] str) {
        ArrayList<String> answer = new ArrayList<>();

        for(String x : str) {
            //reverse 를 제공하는 StringBuilder 객체
            String tmp = new StringBuilder(x).reverse().toString();
            answer.add(tmp);
        } 
        return answer;
    }
    //실행 메인 
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Main4 T = new Main4();
        //입력 규격 맞추기 
        Scanner kb = new Scanner(System.in);
        int n = kb.nextInt();

        // 입력 : 사용자가 입력한 N개만큼 문자열 입력받기
        String[] str = new String[n]; //n개 문자열 배열 입력
        for(int i = 0; i<n; i++) {
            str[i] = kb.next();
        }

        // 출력 
        for(String x : T.solution(n, str)) {
            System.out.println(x);//각각 뒤집은 애들 for 돌면서 출력
        }
    }
}

1-4. 단어 뒤집기 -(2) : 직접 reverse() 구현

*  1-4. 단어 뒤집기 
 *  설명 : N개 단어 주어지면 각 단어 뒤집어 출력 프로그램
 *  
 *  입력 : 첫 줄에 자연수 N개(<=20) 주어짐 
 *      둘째 줄부터 N개의 단어를 각 줄에 하나씩 입력. (단 영어로만 구성)
 *  
 *  출력 : N개 단어 입력한 순서대로 한 줄에 하나씩 뒤집어서 출력 
 * */

public class Main4 {
    //솔루션 함수 
    public ArrayList<String> solution(int n, String[] str) {
        ArrayList<String> answer = new ArrayList<>();

        //String -> char 배열 변경 후 -> 대칭 요소 간 자리 바꾸기 -> 가운데는 그대로니까
        // lt <-> rt 찍어서 서로 교환
        for(String x: str) {
            char[] s = x.toCharArray();
            int lt = 0, rt = x.length()-1;

            while(lt < rt) { //엇갈리지만 많은 상태에서 교환하면 됨
                char tmp = s[lt];
                s[lt] = s[rt];
                s[rt] = tmp;
                lt ++;
                rt --;
            }
            // valueOf() 내용물을 string화 하는 메소드
            String tmp = String.valueOf(s);
            answer.add(tmp);
        }
        return answer;
    }
    //실행 메인 
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Main4 T = new Main4();
        //입력 규격 맞추기 
        Scanner kb = new Scanner(System.in);
        int n = kb.nextInt();

        // 입력 : 사용자가 입력한 N개만큼 문자열 입력받기
        String[] str = new String[n]; //n개 문자열 배열 입력
        for(int i = 0; i<n; i++) {
            str[i] = kb.next();
        }
        // 출력 
        for(String x : T.solution(n, str)) {
            System.out.println(x);//각각 뒤집은 애들 for 돌면서 출력
        }
    }
}
728x90