백준 | 문자열 섹션 - 2743번, 9086번, 11720번 풀이

728x90

2743번. 단어 길이 재기

문제

알파벳으로만 이루어진 단어를 입력받아, 그 길이를 출력하는 프로그램을 작성하시오.

입력

첫째 줄에 영어 소문자와 대문자로만 이루어진 단어가 주어진다. 단어의 길이는 최대 100이다.

출력

첫째 줄에 입력으로 주어진 단어의 길이를 출력한다.

 

내 제출

import java.util.Scanner;

public class Main {    
    //솔루션 함수 (문자열) => 개수 리턴 
    public int solution(String str) {
        int answer = 0;
        for(int i = 0; i< str.length(); i++) {
            answer++;
        }

        return answer;
    }

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

        Scanner kb = new Scanner(System.in);
        // 문자열 입력
        String str = kb.next();

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

}

9086번. 문자열

문제

문자열을 입력으로 주면 문자열의 첫 글자와 마지막 글자를 출력하는 프로그램을 작성하시오.

입력

입력의 첫 줄에는 테스트 케이스의 개수 T(1 ≤ T ≤ 10)가 주어진다. 각 테스트 케이스는 한 줄에 하나의 문자열이 주어진다. 문자열은 알파벳 A~Z 대문자로 이루어지며 알파벳 사이에 공백은 없으며 문자열의 길이는 1000보다 작다.

출력

각 테스트 케이스에 대해서 주어진 문자열의 첫 글자와 마지막 글자를 연속하여 출력한다.

 

내 제출

import java.util.Scanner;

public class Main {    
    //솔루션 함수 (문자열) => 개수 리턴 
    public String solution(String  str) {
        String answer = "";

        for(int i = 0; i<str.length(); i++) {
            char[] tmp = str.toCharArray();

            /// 문자 1개의 문자열인 경우 
            if(tmp.length == 1) {
                answer += tmp[i];
            }

            if(i==0) { //첫글자
                answer += tmp[i];
            }else if(i == tmp.length -1) { //끝글자
                answer += tmp[i];
            }
        }

        return answer;
    }

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

        Scanner kb = new Scanner(System.in);

        //1) 첫줄 입력 : 개수 T 입력 
        int n = kb.nextInt();

        //2) T개 만큼 String []에 입력 
        String[] str = new String[n]; //n개 배열 문자열로 받고 
            // n번 만큼 문자열 입력받기 
        for(int i = 0; i<n; i++    ) {
            str[i] = kb.next();
        }

        //솔루션 리턴값 출력
        for(int i = 0; i<n; i++) {
            System.out.println(T.solution(str[i]));
        }
    }
}

11720번. 문자열

문제

N개의 숫자가 공백 없이 쓰여있다. 이 숫자를 모두 합해서 출력하는 프로그램을 작성하시오.

입력

첫째 줄에 숫자의 개수 N (1 ≤ N ≤ 100)이 주어진다. 둘째 줄에 숫자 N개가 공백없이 주어진다.

출력

입력으로 주어진 숫자 N개의 합을 출력한다.

내 제출

  • 여기서 중요한 것은 charAt() 으로 문자열의 각 값을 숫자로 얻어올 경우 아스키값을 가져오나봠
  • 해당 값을 얻어와야 하므로 charAt()-’0’ 까지 해야 함
import java.util.Scanner;

public class Main {    
    //솔루션 함수 
    public int solution(int n, String  str) {
        int answer = 0;

        for(int i = 0; i<n; i++) {
            answer += str.charAt(i)-48; // 또는 - '0'  
            //2. 문자열에 있는 각 숫자를 한 자리씩 읽고 싶을 때, charAt() 함수를 사용하면 된다.
                //charAt()만 쓰면 아스키 코드 값이 나오는듯?
                // charAt()-'0'까지 적어야 원하는 '숫자 값'을 얻을 수 있다.
        }

        return answer;
    }

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

        Scanner kb = new Scanner(System.in);
        //1) N 입력
        int n = kb.nextInt();
        //2) 문자열로 입력받기 
        String str = kb.next();

        // 정답 출력 
        System.out.println(T.solution(n, str));
    }
}
728x90