정수 num
과 k
가 매개변수로 주어질 때, num
을 이루는 숫자 중에 k
가 있으면 num
의 그 숫자가 있는 자리 수를 return하고 없으면 -1을 return 하도록 solution 함수를 완성해보세요.
num
< 1,000,000k
< 10num
에 k
가 여러 개 있으면 가장 처음 나타나는 자리를 return 합니다.num | k | result |
---|---|---|
29183 | 1 | 3 |
232443 | 4 | 4 |
123456 | 7 | -1 |
입출력 예 #1
입출력 예 #2
입출력 예 #3
const solution = (num, k) =>
String(num).includes(String(k))? String(num).indexOf(k)+1:-1;
/*
내가 처음 작성한 코드이다.
1. String(num): 매개변수로 들어오는 num은 number타입이기 때문에 문자열로 변환을 해준다.
2. includes(String(k)): includes를 통해서 String(num)에 String(k)가 있는지 확인해준다.
만약 'k'가 포함되어 있다면 이 표현식은 true를 반환하고, 그렇지 않다면 false를 반환한다.
3. 삼항 연산자를 이용해서 2번 결과가 true가 나왔을때 String(num).indexOf(k)+1을 return 해주고
false일 경우 -1을 반환해준다.
*/
function solution(num, k) {
var index = num.toString().split("").indexOf(k.toString());
if (index === -1){
return index;
}
else{
return index + 1;
}
}
/*
다른 분의 풀이도 공부할겸 가져와봤다.
SOLUTION1에서는 String으로 num을 형변환 해주었는데 SOLUTION2에서는 toString() 메서드를
사용하여 변환해었다.
1. num.toString().split(""): 이 줄은 먼저 주어진 정수 num을 문자열로 변환하고(toString()),
그 문자열을 각각의 문자로 분리하여 배열로 만든다.(split(""))
2. indexOf(k.toString()): 이 배열에서 특정 숫자 k(문자열로 변환된)의 인덱스를 찾는다.(indexOf())
만약 k가 존재한다면 그 위치(0부터 시작하는 인덱스)를 반환하고, 존재하지 않으면 -1을 반환한다.
3. 이 값을 변수 index에 저장한다.
4. if문: 만약 index가 -1(즉, 숫자 k가 없는 경우)이라면 -1을 그대로 반환한다.
반대로, 숫자 k가 존재한다면 (즉, index 가 0 이상인 경우), 문제에서 요구하는 대로 "자리 수"를
반환해야 하므로 실제 인덱스에 1을 더한 값을 반환한다. (index + 1)
왜냐하면 자바스크립트의 배열 인덱스은 0부터 시작하기 때문에 실제 자리수와 맞추기 위해선 1을 더해줘야 한다.
*/