https://school.programmers.co.kr/learn/courses/30/lessons/120887
1. k를 String형으로 바꿔서 for문이 돌아갈 때 contains로 k가 있으면 answer ++, 하지만 11같은 것 때문에(같은 숫자 두 번) for문 나오는 숫자들을 char형으로 바꿔서 char-'0'으로 하면 int로 된다. int로 변환된 ch와 k 비교 해서 ++;
2. 함수들 안쓰고 오로지 /10 %10으로 비교
1.
class Solution {
public int solution(int i, int j, int k) {
int answer = 0;
for(int x=i; x<=j; x++) {
if(String.valueOf(x).contains(String.valueOf(k))) {
for(char ch : String.valueOf(x).toCharArray()) {
if(ch-'0' == k) answer ++;
}
}
}
return answer;
}
}
- 첫 번째 테스트케이스가 꽤 길게 나와서 슬펐지만.. (다른 풀이 중에 진짜 깜짝놀라게 오래걸린 것도 보긴함..) 그래도 한 번에 해결한 것에.. 의의를 둔다...
- ch-'0'으로 하면 char -> int 변환 되는 거..!
2.
class Solution {
public int solution(int i, int j, int k) {
int answer = 0;
for (int x= i; x<= j; x++){
int tmp = x;
while(tmp != 0) {
if(tmp % 10 == k) answer++;
tmp /= 10;
}
}
return answer;
}
}
- 깔끔 그 자체인 코드.. x를 임시 변수에 넣고, 그것을 while문으로 돌려서 일의 자리 숫자 k와 비교해서 answer ++
- 일의 자리, 십의 자리 숫자 나올 때는 /= %= 이 좋은 것 같다. 시간이 빨리 나와서 놀랐다.
'algorithm > Programmers' 카테고리의 다른 글
[JAVA] 이진수 더하기 (0) | 2023.03.23 |
---|---|
[JAVA] 잘라서 배열로 저장하기 (0) | 2023.03.23 |
[JAVA] A로 B 만들기 (0) | 2023.03.20 |
[JAVA] 문자열 정렬하기 (2) (0) | 2023.03.20 |
[JAVA] 숫자 찾기 (0) | 2023.03.20 |