JAVA - 백준 9086

혜준·2024년 7월 16일

백준 티어를 열심히 올려보고자 백준 홈페이지를 들어갔으나
나의 약점 문자열 문제에 맞닥뜨리고 말았다 .. !
그래서 시작된 나의 투자 .. ㅎㅎ
이제 charAt()메소드가 포함된 문제 같은 걸 많이 풀어봐야겠다 ㅎㅎ ..

1. SCANNER로 풀기

  • 이번 백준 문제는 아래 처럼 첫번째 문자와 마지막 문자를 출력하는 것이다.

첫번째 문자를 출력하기 위해선 charAt(0)를 써야 한다.
scanner로 입력받으면 문자열 형태로 존재하게 되는데 여기선 바로 char타입을 사용할 수 없게 되는 것이다.

기본형 변수인 char는 단 한 글자만 저장할 수 있는 변수인데
Scanner로 입력을 받을 때는 String 타입으로 밖에 받을 수 없는 것이다.
그래서 등장한 것이 바로 CharAt()이라는 메소드이다.

이 메소드는 string으로 저장된 문자열 중에서
한 글자만 선택해서 char타입으로 변환해주는 메소드이다.

이 녀석이 존재하고 있기 때문에 우리는 scanner를 쓰면서도 char타입을 사용할 수 있는 것이다.


import java.util.Scanner;

class Main {
    public static void main(String[] args) {

        Scanner scanner=new Scanner(System.in);
        String str[] = new String[10];   // 문자열을 저장할 배열

        int num=scanner.nextInt();  // 테스트 케이스의 개수
        scanner.nextLine();  //버퍼 비우기

        for(int i=0; i<num; i++){
            str[i]=scanner.nextLine();
        }
        
        char first = ' ', last = ' ';

        for (int i = 0; i < num; i++) {
            first = str[i].charAt(0);  //첫번째 문자 출력
            System.out.print(first);

            //마지막 문자 출력하기
            int lastIndex=str[i].length()-1;  //마지막 문자의 인덱스
            last=str[i].charAt(lastIndex);
            System.out.println(last);  //마지막 문자 출력하기 
        }
    }
}

마지막 문자의 인덱스는 0부터 시작하기 때문에 마지막 문자의 길이-1을 해서 마지막 문자의 인덱스를
char last에 저장하여 출력한다.

2.BufferedReader

이제 bufferedReader로 다시 풀어보면

위에는 bufferedReader로 푼것이고 마지막은 scanner로 푼 방법이다

시간 차이가 많이 나긴 하네 ..

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

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

        String s=br.readLine();
        int num=Integer.parseInt(s);

        String s1[]=new String[10];

        for(int i=0; i<num; i++){
            s1[i]=br.readLine();
        }
//
        for(int i=0; i<num; i++){
            System.out.print(s1[i].charAt(0));
            int lastIndex=s1[i].length()-1;
            System.out.print(s1[i].charAt(lastIndex));
            System.out.println();
        }

    }
}

문자열은 배열에 저장하고 꺼내는 것이 정답이다

profile
성장을 추구하는 개발자 입니다 :)

0개의 댓글