성장일기

내가 보려고 정리하는 공부기록

코딩테스트/백준 브론즈,실버

[백준] 9086 : 문자열 (next와 nextLine) - JAVA

와나나나 2024. 1. 15. 17:42
728x90

백준 단계별 문제풀이 5단계 (문자열)

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

 

9086번: 문자열

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

www.acmicpc.net

 

# 문제

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

 

# 예제

입력

3
ACDKJFOWIEGHE
O
AB

 

출력

AE
OO
AB

 

# 필요개념

 

계속 런타임에러가 떠서 애를 먹었다,, ‘숫자 다음줄 문자열’ 의 형태라서 string을 받을 때 sc.nextLine()을 사용하면 개행만 가져온다고 한다,,,,, 그래서 이 점을 이용해 nextInt()로 문자를 먼저 받은 후, nextLine()으로 개행을 받아서 이후로는 string만 받을 수 있게 하려 했는데 생각해보니 3번의 string을 생성하는 것보다는 stringbuilder를 사용하는 것이 효율적이라고 생각해 StringBuilder를 사용했다!

 


📌 개인적으로 궁금해서 정리한 next()와 nextLine() 차이

  둘 다 string형을 받을 때 쓰는 메소드이지만 차이점이 있었다.


  - next()

그냥 다음 토큰을 string으로 리턴하는 메소드. 분리자는 제외하고 읽어옴


  - nextLine()

개행문자까지 읽어온다. 즉, 분리자도 다 읽어올 수 있다는 의미.

예를 들어, 가<엔터> or 가나다 라마<엔터> 어떤식으로 입력이 되었든 <엔터> 까지 문자열을 모두 가져오게 된다. 물론 반환은 개행문자 이전 문자열만 반환된다.

 

# Code

import java.util.*;

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

        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < n; i++) {
            String str = sc.next();
            sb.append(str.charAt(0));
            sb.append(str.charAt(str.length()- 1) + "\n");
        }
        System.out.print(sb);
    }
}

 

 

이렇게 StringBuilder를 사용해서 문자열을 붙여나갔다! StringBuilder에 대한 설명은 아래 게시물을 참고하면 좋을 거 같다

https://wanna-developer02.tistory.com/5

 

[프로그래머스] 문자 리스트를 문자열로 변환하기 - JAVA

프로그래머스 코딩 기초 트레이닝 DAY 3 - (2) 출처 - https://school.programmers.co.kr/learn/courses/30/lessons/181941 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞

wanna-developer02.tistory.com

 

# 결과