백준 단계별 문제풀이 5단계 (문자열)
https://www.acmicpc.net/problem/9086
# 문제
문자열을 입력으로 주면 문자열의 첫 글자와 마지막 글자를 출력하는 프로그램을 작성하시오
# 예제
입력
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
# 결과
'코딩테스트 > 백준 브론즈,실버' 카테고리의 다른 글
[백준] 1157 : 단어공부 - JAVA (1) | 2024.01.15 |
---|---|
[백준] 11654 : 아스키코드 (System.in에 대해) - JAVA (0) | 2024.01.15 |
[백준] 1546 : 평균 (스트림 실수형 매핑 _ mapToDouble()) - JAVA (1) | 2024.01.14 |
[백준] 3052 : 나머지 (distinct() 메소드) - JAVA (0) | 2024.01.14 |
[백준] 10813 : 공바꾸기 (setAll() 메소드) - JAVA (0) | 2024.01.14 |