본문 바로가기
알고리즘/[백준] JAVA

[백준] 9086 문자열

by 코딩맛집 2023. 5. 2.

https://www.acmicpc.net/problem/9086

 

9086번: 문자열

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

www.acmicpc.net

 

방법1

import java.util.Scanner;

public class Main {
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        StringBuilder sb = new StringBuilder();

        int n = sc.nextInt();
        for(int i = 0; i<n; i++){
            String word = sc.next();
            int idx = word.length()-1;
            sb.append(word.charAt(0));
            sb.append(word.charAt(idx)+ "\n");
        }
        System.out.println(sb);
    }
}

 

잘못된 풀이

import java.util.Scanner;

public class Main {
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        String word = sc.next();
        int idx = word.length()-1;
        System.out.println(word.charAt(0) + word.charAt(idx));
    }
}

입출력값

word
219

word.charAt(0) + word.charAt(idx)를 연산하면 숫자가 출력되는 이유?

char 2개를 더한 아스키코드값이 나오므로 각각 출력해준다.

 

방법2

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

        for(int i=0; i<n; i++){
            String word = br.readLine();
            int idx = word.length()-1;

            System.out.println(String.valueOf(word.charAt(0)) + String.valueOf(word.charAt(idx)));
        }
    }
}

String.valueOf()와 toString()의 차이점.

'알고리즘 > [백준] JAVA' 카테고리의 다른 글

[백준] 10810 공 넣기  (0) 2023.05.02
[백준] 11718 그대로 출력하기  (0) 2023.05.02
[백준] 27866 문자와 문자열  (0) 2023.05.02
[백준] 10811 바구니 뒤집기  (0) 2023.05.02
[백준] 3052 나머지  (0) 2023.05.02