* 인프런의 "자바(Java) 알고리즘 문제풀이 : 코딩테스트 대비" 강좌 수강
첫 문제가 오답률이 생각보다 높아서 당황했는데 아니나 다를까 생각보다 쉽게 풀리지 않았다. 성능 최적화를 위해 scanner 대신 BufferedReader를 사용했는데 readLine과 charAt을 제대로 활용하지 못해 문제해결이 쉽지 않았다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
import java.io.*;
public class Main {
private int solution(String str, char ch) {
int answer = 0;
str = str.toLowerCase();
ch = Character.toLowerCase(ch); // toLowerCase나 toUpperCase나 상관없음
for (char x : str.toCharArray()) {
if (x == ch) {
answer++;
}
}
return answer;
}
public static void main(String[] args) throws IOException {
Main T = new Main();
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str = br.readLine();
char ch = br.readLine().charAt(0); // 문자열 중의 특정문자의 인덱스 적용
System.out.println(T.solution(str, ch));
}
}
|
cs |
정리
1. 문자 하나를 입력받을 때 charAt(index)를 이용해 받을 수 있다
2. 대소문자 구분이 없을 경우에는 대소문자를 하나로 통일시켜준다
- toLowerCase, toUpperCase 사용
3. 문자열을 한 글자씩 비교하는 경우 문자로 분해하기 위해 string.toCharArray(), string.charAt() 활용한다
4. foreach 문 사용이 훨씬 더 직관적이고 코드도 단축된다