티스토리 뷰
이번 문제는 여느 문제와 마찬가지로 나머지 연산으로 쉽게 해결될 문제였다.
using System;
public class Solution {
public int solution(int num, int k) {
int answer = -1;
int stack = 1;
for (; num > 0; num /= 10, stack++){
// 가장 마지막 자리를 찾을 경우
//if(answer < 0 && num % 10 == k)
// 가장 앞 자리를 찾을 경우
if(num % 10 == k)
answer = stack;
}
return (answer > 0) ? stack - answer : answer;
}
}
문제를 해결하며 동일한 수가 나오는 경우 앞자리를 찾는지 뒷자리를 찾는지 잠시 헷갈려서 그냥 둘다 가능하게 만들어 버렸다.
다른 분들의 코드 중에는 가장 많은 비중이 숫자를 문자열로 변경하여 일치하는 문자의 첫 자리를 찾는 것이었다.
using System;
public class Solution {
public int solution(int num, int k) {
int answer = num.ToString().IndexOf(k.ToString()) + 1;
return answer == 0 ? answer - 1 : answer;
}
}
문자열 캐스팅에 탐색 함수까지 실행되니 상상이상의 속도가 걸렸다.
물론 저정도는 사람이 체감이 되진 않겠지만..... 저런 경우가 많다면 문제가 되겠지.
'코딩테스트 > Programmers' 카테고리의 다른 글
[Programmers] 입문) 중복된 문자 제거 (Distinct) (0) | 2023.06.28 |
---|---|
[Programmers] 입문) 합성수 찾기 (조건문) (0) | 2023.06.28 |
[Programmers] 입문) 369게임 (0) | 2023.06.28 |
[Programmers] 입문) 피자 나눠 먹기 (2) (최소공배수) (0) | 2023.06.28 |
[Programmers] 입문) 배열 회전시키기 (Shift Array) (0) | 2023.06.28 |