개발자 Saaad

[JAVA] 백준 5단계 (문자열) 문제 풀이 본문

알고리즘 문제풀이/백준

[JAVA] 백준 5단계 (문자열) 문제 풀이

Saaad 2025. 1. 21. 16:49

1. 27866번 문자와 문자열

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringBuilder sb = new StringBuilder();
        
        // 문자열을 입력받고 입력한 정수의 순서의 문자를 출력하는 예제

        // 문자열 입력 받기
        String str = br.readLine();

        // i번 째 정수 입력 받기
        int N = Integer.parseInt(br.readLine());

        // charAt 메소드를 이용해 해당하는 인덱스 번째의 글자를 출력
        char c = str.charAt(N - 1);
        
        System.out.println(c);
        
    }
}

 


2. 2743번 단어 길이 재기

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        
        // 문자열을 입력받고 입력한 문자열의 길이를 출력하는 프로그램

        // 문자열 입력 받기
        int N = br.readLine().length();
        System.out.println(N);
    }
}

3. 9086번 문자열

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringBuilder sb = new StringBuilder();
        // 문자열을 입력으로 주면 문자열의 첫 글자와 마지막 글자를 출력하는 프로그램을 작성하시오.
        
        int N = Integer.parseInt(br.readLine());

        // N번 문자열을 입력
        for (int i = 0; i < N; i++) {
            String str = br.readLine();
            sb.append(str.charAt(0)).append(str.charAt(str.length()-1)).append("\n");
        }

        System.out.print(sb.toString());
    }
}

4. 11654번 아스키 코드

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        // 알파벳 소문자, 대문자, 숫자 0-9중 하나가 주어졌을 때, 
        // 주어진 글자의 아스키 코드값을 출력하는 프로그램을 작성하시오.

        // 알파벳 소문자, 대문자, 숫자 0-9 중 하나가 첫째 줄에 주어진다.
        
        char c = (char)br.read();

        System.out.println((int)c);
       
    }
}

5. 11720번 숫자의 합

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        
        // N개의 숫자가 공백 없이 쓰여있다. 이 숫자를 모두 합해서 출력하는 프로그램을 작성하시오.
        
        // 첫째 줄에 숫자의 개수 N (1 ≤ N ≤ 100)이 주어진다. 둘째 줄에 숫자 N개가 공백없이 주어진다.

        // 입력으로 주어진 숫자 N개의 합을 출력한다.
        
        int N = Integer.parseInt(br.readLine());

        String str = br.readLine();

        int sum = 0;
        for(int i = 0; i < str.length(); i++) {
            sum += Integer.parseInt(str.substring(i, i+1));  // str.charAt(i) - '0' 로도 가능
        }

       System.out.println(sum);
    }
}

 


6. 10809번 알파벳 찾기

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringBuilder sb = new StringBuilder();

        // 알파벳 소문자로만 이루어진 단어 S가 주어진다. 각각의 알파벳에 대해서,
        // 단어에 포함되어 있는 경우에는 처음 등장하는 위치를,
        // 포함되어 있지 않은 경우에는 -1을 출력하는 프로그램을 작성하시오.

        // 첫째 줄에 단어 S가 주어진다. 단어의 길이는 100을 넘지 않으며, 알파벳 소문자로만 이루어져 있다.

        // 각각의 알파벳에 대해서, a가 처음 등장하는 위치, b가 처음 등장하는 위치, ... z가 처음 등장하는 위치를 공백으로 구분해서
        // 출력한다.

        // 만약, 어떤 알파벳이 단어에 포함되어 있지 않다면 -1을 출력한다. 단어의 첫 번째 글자는 0번째 위치이고, 두 번째 글자는 1번째
        // 위치이다.

        // 소문자 문자열 입력 받기
        String str = (br.readLine()).toLowerCase();
        int[] arr = new int[26];

        // -1로 초기화
        for (int i = 0; i < arr.length; i++) {
            arr[i] = -1;
        }

        // 입력받은 문자열을 순회
        for(int j = 0; j < str.length(); j++) {
            char c = str.charAt(j);

            // 최초 문자가 등장한 위치를 출력하기 위해
            if (arr[c  - 'a'] == -1)  {
                arr[c - 'a'] = j;
            }
        
        }

        // 출력하기 위해 sb에 담음
        for (int k = 0; k < arr.length; k++) {
            sb.append(arr[k]).append(" ");
        }

        System.out.println(sb.toString()); 

    }
}

7. 2675번 문자열 반복

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringBuilder sb = new StringBuilder();

        // 테스트 케이스 개수 입력
        int T = Integer.parseInt(br.readLine());

        
        for (int i = 0; i < T; i++) {  
            StringTokenizer st = new StringTokenizer(br.readLine());
            int n = Integer.parseInt(st.nextToken()); // 반복 횟수
            String str = st.nextToken(); // 반복할 문자열

            for (int j = 0; j < str.length(); j++) {
                String c = String.valueOf(str.charAt(j));
                sb.append(c.repeat(n));
            }
            sb.append("\n");
        }
        
        System.out.print(sb.toString());
    }
}

8. 1152번 단어의 개수

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

class Main { 
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String S = br.readLine();
        StringTokenizer st = new StringTokenizer(S, " "); //공백 기준으로 S 문자열 쪼개기
        System.out.println(st.countTokens());
    }
}

9. 2908번 상수

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

class Main { 
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        
        StringTokenizer st = new StringTokenizer(br.readLine());

        String A = st.nextToken();
        String B = st.nextToken();

        // StringBuilder를 이용하여 문자열 뒤집기
        String reverse_A = new StringBuilder(A).reverse().toString();
        String reverse_B = new StringBuilder(B).reverse().toString();

        if (Integer.parseInt(reverse_A) > Integer.parseInt(reverse_B)) {
            System.out.println(reverse_A);
        } else {
            System.out.println(reverse_B);
        }
    }
}

 


10. 5622번 다이얼

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

class Main { 
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String st = br.readLine();
        int time = 0;

        for (int i = 0; i < st.length(); i++) {
            char c = st.charAt(i);
            if (c >= 'A' && c <= 'C')
                time += 3;
            else if (c >= 'D' && c <= 'F')
                time += 4;
            else if (c >= 'G' && c <= 'I')
                time += 5;
            else if (c >= 'J' && c <= 'L')
                time += 6;
            else if (c >= 'M' && c <= 'O')
                time += 7;
            else if (c >= 'P' && c <= 'S')
                time += 8;
            else if (c >= 'T' && c <= 'V')
                time += 9;
            else if (c >= 'W' && c <= 'Z')
                time += 10;
            else
                time += 11;
        }

        System.out.print(time);
    }
}

11. 11718번 그대로 출력하기

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringBuilder sb = new StringBuilder();
        while (true) {
            String str = br.readLine();
            if (str == null || str.isEmpty()) {
                break;
            }
            sb.append(str).append("\n");
        }
        br.close();
        System.out.println(sb.toString());
    }
}