🛫 Programmers School에서 숫자 찾기 문제 풀이 과정에서 알게 된 개념 정리
class Solution {
public int solution(int num, int k) {
int answer = -1;
String s = Integer.toString(num);
if (0<num && num<1000000 && 0<=k && k<10){
answer = s.indexOf((char)k+'0');
if (answer != -1) answer++;
}
return answer;
}
}
int형을 char형으로 변환하기 위해 아래와 같이 코드 작성하였지만 변환되지 않음
answer = s.indexOf((char)k);
위와 같이 작성할 경우 해당 k값에 맞는 ASCII코드 값으로 변환되고 있었음
int형에서 숫자는 그대로 유지하되 char형으로 변환하기 위해서는 해당 숫자의 ASCII값으로 변경되도록 하는 작업 필요
answer = s.indexOf((char)k+'0');
answer = s.indexOf((char)k+48);
문자 '0'은 10진수 값으로 48을 의미하기에 '0'을 더해주서나 48을 더해주면 원하는 결과 도출 가능하다.
int k = 7;
System.out.println((char)k+'0'); // 55
System.out.println((char)k+48); // 55
System.out.println('7'==((char)k+'0')); //true
System.out.println('7'==((char)k)); //false
문자열의 인덱스 값을 찾아주는 메서드
String s = 'abc';
System.out.println(s.indexOf('a'));
// output: 0