카테고리 없음

[단계별로 풀어보기-Java] 5단계 문자열

꾸주니=^= 2025. 1. 20. 22:25

백준 사이트 로고

 

안녕하세요 오늘은 5단계를 풀어보겠습니다 ~


✏️ 문제 번호 : 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));

        String S = br.readLine();
        int i = Integer.parseInt(br.readLine());

        System.out.println(S.charAt(i - 1));
    }
}

 

문자열 S에서 특정 위치의 문자를 가져오기 위해 
charAt 메서드를 사용했습니다.

 


✏️ 문제 번호 : 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));

        String s = br.readLine();
        System.out.println(s.length());

    }
}

 


✏️ 문제 번호 : 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));

        int T = Integer.parseInt(br.readLine());

        for (int i = 0; i < T; i++) {
            String inputString = br.readLine();

            // StringBuilder를 사용해 첫 문자와 마지막 문자 연결
            StringBuilder sb = new StringBuilder();
            sb.append(inputString.charAt(0)); // 첫 문자 추가
            sb.append(inputString.charAt(inputString.length() - 1)); // 마지막 문자 추가

            // 결과 출력
            System.out.println(sb.toString());
        }
    }
}

 

StringBuilder 객체 sb를 생성하고 append() 메서드를 사용해 첫 문자와 마지막 문자를 추가했습니다.

마지막으로 sb.toString()을 호출해 연결된 문자열을 출력했습니다.


✏️ 문제 번호 : 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));

         char c = br.readLine().charAt(0);
         System.out.print((int) c);
    }
}

 


✏️ 문제 번호 : 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));

        int N = Integer.parseInt(br.readLine());

        String s = br.readLine();

        int sum = 0;

        // 문자열의 각 문자를 숫자로 변환하여 합산
        for (int i = 0; i < N; i++) {
            sum += s.charAt(i) - '0'; // 문자를 숫자로 변환
        }
        System.out.print(sum);
    }
}

 


위 문제의 포인트는

문자열로 숫자를 입력받기 입니다.

 

숫자 리스트를 String 형태로 입력 받아서 문자열에서 각 문자를 숫자로 변환하기 위해,
s.charAt(i) - '0'을 사용합니다.

 


동작 과정

1. 문자열"12345"에서 s.charAt(i)를 사용해 각 문자를 하나씩 가져옵니다
s.charAt(0)  '1'
s.charAt(1)'2'
s.charAt(2)  '3'
...

2. 가져온 문자에서'0'을 뺍니다
'1' - '0'  1
'2' - '0'2
'3' - '0'  3
...

3. 변환된 숫자를sum에 더합니다
sum = 0 + 1 = 1
sum = 1 + 2 = 3
sum = 3 + 3 = 6
...

 

만약, - '0'을 하지 않는다면?

made by Lee Jae-wook

'1'의 아스키 값은 49이므로, 숫자 1로 변환되지 않고 49로 처리됩니다.

따라서, 결과는 잘못된 합계가 출력됩니다.

잘못된 결과의 모습

 

 


✏️ 문제 번호 : 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));
        String s = br.readLine();

        for (char c='a';c<='z';c++){

            //알파벳 위치
            int index = s.indexOf(c);

            // 위치 출력
            System.out.print(index + " ");

        }
    }
}

 


위 코드에서 s.indexOf(c)를 사용해서 
알파벳 c가 문자열 s에서 처음 등장하는 위치를 반환했습니다.
만약 c가 s에 포함되지 않은 경우 -1을 반환합니다.

 

indexOf ?

Java에서 문자열이나 배열에서 특정 값의 첫 번째 위치(인덱스)를 반환하는 메서드입니다.
만약 값이 해당 문자열이나 배열에 존재하지 않으면 -1
을 반환합니다.

 

동작 과정

'a': indexOf('a') → 0
'b': indexOf('b') → 1
'c': indexOf('c') → -1 (포함되지 않음)
'd': indexOf('d') → -1
...
'o': indexOf('o') → 5

 


✏️ 문제 번호 : 2675
문자열 반복

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 T = Integer.parseInt(br.readLine());

        for(int i=0;i<T;i++){
            String[] input = br.readLine().split(" ");
            int R = Integer.parseInt(input[0]);
            String S=input[1];

            StringBuilder result = new StringBuilder();
            for(int j=0;j<S.length();j++){
                for(int k=0;k<R;k++){
                    result.append(S.charAt(j));
                }
            }
            System.out.println(result);
        }
    }
}

 


✏️ 문제 번호 : 1152
단어의 개수

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));

        String input = br.readLine().trim(); // 앞뒤 공백 제거

        // StringTokenizer로 단어 분리
        StringTokenizer st = new StringTokenizer(input, " ");
        System.out.println(st.countTokens()); // 단어 개수 출력
    }
}

 


✏️ 문제 번호 : 2908
상수

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));

        String[] input = br.readLine().split(" ");

        String a = input[0];
        String b = input[1];

        int reverseA = reverseNumber(a);
        int reverseB = reverseNumber(b);

        System.out.println(Math.max(reverseA, reverseB));
    }

    private static int reverseNumber(String num) {
        String reversed = "";
        for (int i = num.length() - 1; i >= 0; i--) {
            reversed += num.charAt(i); // 문자열의 뒤에서 앞으로 읽음
        }
        return Integer.parseInt(reversed); // 정수로 변환
    }
}

 


✏️ 문제 번호 : 5622
다이얼

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));
        String input = br.readLine();
        int total = 0;

        for (int i = 0; i < input.length(); i++) {
            char c = input.charAt(i);

            if ("ABC".indexOf(c) != -1) total += 3;
            else if ("DEF".indexOf(c) != -1) total += 4;
            else if ("GHI".indexOf(c) != -1) total += 5;
            else if ("JKL".indexOf(c) != -1) total += 6;
            else if ("MNO".indexOf(c) != -1) total += 7;
            else if ("PQRS".indexOf(c) != -1) total += 8;
            else if ("TUV".indexOf(c) != -1) total += 9;
            else if ("WXYZ".indexOf(c) != -1) total += 10;
        }

        System.out.println(total);
    }
}

 

indexOf를 사용해 해당 문자가 특정 문자열에 포함되어 있는지 확인하여,

입력 값에 해당하는
값이 있을 경우, 0을 반환
값이 없을 경우, -1을 반환하는 로직을 세웠습니다.

 


✏️ 문제 번호 : 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));
        String str;

        while((str = br.readLine()) !=null){
            System.out.println(str);
        }

    }
}

 


네..~
이렇게 오늘도 백준 문제를 풀어봤습니다

내일은 심화 과정인데 과연 어떤 문제가 나올지 ...!! 😉

저는 내일 뵙도록 하겠습니다 !!!

 

오코완
(오늘도 코테 공부 완료)

인스타그램 : pettydust