char a = scan.next().charAt(0);
scan을 통해 char 형태로 받고 싶을 때 쓰는 방법
str.toCharArray()
// string 형태의 문자를 char 형태로 바꿈
Character.isLowerCase(ch)
// ch가 소문자일 때 true를 반환 (Upper의 경우에도 같다)
while ((pos = str.indexOf(' ')) != -1) {
String tmp = str.substring(0, pos);
int len = tmp.length();
if (len > m) {
m = len;
answer = tmp;
}
str = str.substring(pos + 1);
}
/** while (String 안에 공백이 없어질 때까지)
tmp는 띄어쓰기 전까지 자른 단어 한개
----
str을 한 단어 없애고 자름
public ArrayList<String> solution(int n, String[] str) {
ArrayList<String> answer = new ArrayList<>();
for (String x : str) {
String tmp = new StringBuilder(x).reverse().toString();
answer.add(tmp);
}
return answer;
}
/** ArrayList의 크기는 배열과 다르게 가변적이다.
StringBuilder는 그냥 출력 불가능 -> toString() 붙여줘야한다. (아마 주소값..?)
StringBuilder의 내장메서드로 reverse()가 있는데, 단어를 거꾸로 돌려준다.
Character.isAlphabetic(a)
// a가 알파벳이면 true를 반환 (앞에 !를 붙여 특수문자 가려낼 수 있다)
String answer = "";
for (int i=0; i<str.length(); i++){
if (str.indexOf(str.charAt(i)) == i){
answer += str.charAt(i);
}
}
/** indexOf 메서드는 예를들어 a를 찾는다 하였을 때 가장 먼저 나오는 것을 불러냄
이 특성을 이용해 첫번째 나오는 것의 순서와 i가 같다면 그것은 한번만 나온 문자이다
public String solution(String s) {
String answer = "NO";
s = s.toUpperCase().replaceAll("[^A-Z]", "");
String tmp = new StringBuilder(s).reverse().toString();
if(s.equals(tmp))
answer = "YES";
return answer;
}
/** 위에서 쓴 replaceAll -> A-Z를 제외한 모든 것들은 없앤다
public String solution(String s) {
String answer = "NO";
s = s.replaceAll("[^0-9]", "");
answer = String.valueOf(Integer.parseInt(s));
return answer;
}
/** s에서 자연수만 빼고 삭제
Integer.parseInt(s) -> 숫자같이 생긴 문자열을 숫자로 바꿔줌 (기본 10진수)
String.valueOf() -> String으로 바꿔준다.
** .toString()과 null 값 반환 방식이 다르다
public int solution(String s) {
String answer = "";
for (char x : s.toCharArray()){
if(Character.isDigit(x)) answer += x;
}
return Integer.parseInt(answer);
}
두가지 방법이 있는데 isDigit(x)를 써서 숫자를 판별할 수도 있다.
String answer = "";
for (int i = 0; i < n; i++) {
String tmp = s.substring(0, 7).replace('#', '1').replace('*', '0');
int num = Integer.parseInt(tmp, 2);
answer += (char) num;
s = s.substring(7);
}
return answer;
/** s에서 7글자를 따로 뺀 후 replace(#을 1로 대체, *을 0으로 대체)한다
Integer.parseInt(tmp, 2) -> tmp라는 숫자를 2진수 기준 10진수 Int값으로 바꿈
num을 char형식으로 casting
s.substring(7)을 이용해 앞의 7글자를 없앤다