반응형
처음 풀이 (결과: 실패)
public class Main {
public static BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
public static BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
public static void main(String[] args) throws IOException {
bw.write(bf.readLine().trim().split(" ").length+"\n");
bf.close();
bw.close();
}
}
굉장히 쉬운 문제라고 생각했고 테스트케이스를 모두 통과하는데 왜 실패라고 뜨는지 알 수 없었다.
검색하던 결과 .split()의 문제점을 발견했다.
trim()을 이용함으로서 문장의 맨 앞이나 맨 뒤의 공백을 제거했으니까 문제가 없을거라고 생각했다.
하지만 아래 코드를 실행해보면 생각이 달라진다...
String s = bf.readLine().trim();
bw.write("!"+s+"!\n");
bw.write(s.split(" ").length+"\n");
bw.write("".split(" ").length+"\n");
trim()을 통해 공백이 없어진 것을 확인할 수 있지만, ""를 split했더니 크기가 1인 것이 확인된다.
String s = bf.readLine().trim();
for(String str: s.split(" ")) {
bw.write("!"+str+"!\n");
}
이전에도 비슷한 내용을 포스팅을 했었는지 찾아보기만 한건지...
어렴풋하게 똑같은 일을 겪은 기억은 있는데 오랜만에 사용하게 되면 자꾸 깜빡하게 되는 것 같다😅
수정한 풀이 (결과: 성공)
public class Main {
public static BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
public static BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
public static void main(String[] args) throws IOException {
StringTokenizer st = new StringTokenizer(bf.readLine()," ");
bw.write(st.countTokens()+"\n");
bf.close();
bw.close();
}
}
StringTokenizer를 이용했더니 바로 해결되었다 ㅜ.ㅜ
trim() 결과가 ""인 경우에 if를 통해 따로 처리해도 되지만..
너무 번거롭기도 하고 StringTokenizer에서 countTokens라는 메소드를 지원한다고 해서 이 방법으로 사용했다.
반응형
'Memo > 코테' 카테고리의 다른 글
[프로그래머스] 10주차 위클리 (0) | 2021.10.13 |
---|---|
[프로그래머스] 2개 이하로 다른 비트 (2) | 2021.10.07 |
백준 - 빗물 (JAVA) (0) | 2021.10.01 |
없는 숫자 더하기 (0) | 2021.09.16 |
부족한 금액 계산하기 (0) | 2021.09.16 |