문제
백준 9086번 문자열
문자열을 T번 입력받고, 각 문자열의 첫 글자와 끝 글자를 출력하는 문제이다.
풀이
- 풀이 1) 입력받은 문자열의 first, last를 charAt()으로 추출한 후 String.valueOf()을 사용하여 문자열로 변환하여 출력
- 풀이 2) 입력받은 문자열의 first, last를 부분 문자열인 substring()으로 추출하여 출력
코드
1. String.valueOf() 사용
import java.util.*;
import java.io.*;
public class Main {
public static void main(String[] args)throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringTokenizer st;
StringBuilder sb = new StringBuilder();
st = new StringTokenizer(br.readLine());
int T = Integer.parseInt(st.nextToken());
for(int i=0; i<T; i++) {
st = new StringTokenizer(br.readLine());
String s = st.nextToken();
String first = String.valueOf(s.charAt(0));
String last = String.valueOf(s.charAt(s.length()-1));
bw.write(first+last+"\n");
}
bw.close();
}
}
2. subString() 사용
import java.util.*;
import java.io.*;
public class Main {
public static void main(String[] args)throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringTokenizer st;
st = new StringTokenizer(br.readLine());
int T = Integer.parseInt(st.nextToken());
for(int i=0; i<T; i++) {
st = new StringTokenizer(br.readLine());
String s = st.nextToken();
String first = s.substring(0, 1);
String last = s.substring(s.length()-1);
bw.write(first+last+"\n");
}
bw.close();
}
}
Note
- String.valueOf() 대신 StringBuilder 객체를 선언하여 sb.toString()을 사용하면 안 될까?
StringBuilder sb = new StringBuilder();
...
String first = sb.toString(s.charAt(0));
String first = sb.toString(s.charAt(s.length()-1));
- 안 된다.
- String.valueOf()는 기본 자료형 또는 객체를 문자열로 변환할 수 있기 때문에 char형을 String으로 변환 가능했다.
- 하지만 toString()은 char타입을 인자로 받지 않는다. toString()메서드는 'Object'클래스를 상속받는 모든 클래스에서 사용 가능한데, 주로 오버라이딩되어 객체가 가지고 있는 정보나 값들을 문자열로 만들어 리턴하는 역할을 한다.
- toString()이 사용된 코드 예시
public class Main {
public static void main(String[] args){
Car car = new Car();
System.out.println(car.toString()); //순수 object값의 toString 결과값(의미없는 디폴트값)이 출력됨
}
}
'BOJ' 카테고리의 다른 글
[백준 10809번/JAVA] 알파벳 찾기 | 문자열 (2) | 2024.03.07 |
---|---|
[백준 11720번/JAVA] 숫자의 합 | charAt(), getBytes() (0) | 2024.03.06 |
[백준 1546번/JAVA] 평균 | 배열 (0) | 2024.03.05 |
[백준 10811번/JAVA] 바구니 뒤집기 | 배열 (0) | 2024.03.05 |
[백준 3052번/JAVA] 나머지 | 배열 (0) | 2024.03.04 |