문제
내가 작성한 오답
: 처음 찾은 자리수를 바로 출력해야하는데 멈추지 않아 같은 수가 뒤에도 있을 경우 마지막의 자리수를 출력했다.

class Solution {
public int solution(int num, int k) {
int answer = -1;
String num1 = String.valueOf(num);
for(int i = 0; i < num1.length(); i++ ){
if(num1.charAt(i)==(char)(k+'0')){
answer = i+1;
}
}
return answer;
}
}
내가 작성한 정답
: break 추가
class Solution {
public int solution(int num, int k) {
int answer = -1;
String num1 = String.valueOf(num);
for(int i = 0; i < num1.length(); i++ ){
if(num1.charAt(i)==(char)(k+48)){
answer = i+1;
break;
}
}
return answer;
int를 char로 변환 시 (아스키코드)‘0’에 해당하는 값을 더해줘야한다.
(char)(k +’0’) 과 (char)(k+48)은 같다.
다른 사람들의 정답
class Solution {
public int solution(int num, int k) {
// "-num"의 문자열을 만들어
// -> index는 0부터 시작하기 때문에 -를 앞에 추가하여 맨 앞의 숫자가 1번이 되게 한다.
// k로 문자열로 만들어 k가 나타나는 첫번째 위치를 찾는다.
return ("-" + num).indexOf(String.valueOf(k));
}
}
indexOf 함수는 특정 문자나 문자열이 주어진 문자열 내에서 처음 나타나는 위치(인덱스)를 반환한다. 이 메서드는 검색할 문자가 발견되지 않으면 -1을 반환한다.
index 0부터 시작
// 문자 검색
String str = "Hello, World!";
int index = str.indexOf('o'); // 'o'의 첫 번째 인덱스를 찾습니다. -> 4
//문자열 검색
String str = "Hello, World!";
int index = str.indexOf("World"); // "World"의 시작 인덱스를 찾는다. -> 7
//검색 시작 위치 지정
String str = "Hello, World!";
int index = str.indexOf('o', 5); // 5번째 인덱스 이후에서 'o'를 찾는다. -> 8
Share article