프로그래머스 코딩테스트 입문 0단계 문제입니다
https://school.programmers.co.kr/learn/courses/30/lessons/120904
📢 문제 설명
정수 num과 k가 매개변수로 주어질 때, num을 이루는 숫자 중에 k가 있으면 num의 그 숫자가 있는 자리 수를 return하고 없으면 -1을 return 하도록 solution 함수를 완성해보세요.
⭕ 정답 코드
1. 삼항 연산자 사용
class Solution {
public int solution(int num, int k) {
int answer = 0;
String strnum = Integer.toString(num);
String strk = Integer.toString(k);
answer = strnum.indexOf(strk);
return answer==-1 ? answer : answer+1;
}
}
2. 기호를 하나 추가하여 index 1부터 카운트
class Solution {
public int solution(int num, int k) {
return ("."+num).indexOf(Integer.toString(k));
}
}
⚠️ 직접 풀어본 처음 풀이
🔗 코드
class Solution {
public int solution(int num, int k) {
int answer = 0;
String strnum = Integer.toString(num);
String strk = Integer.toString(k);
answer = strnum.indexOf(strk)==-1 ? -1 : strnum.indexOf(strk)+1;
return answer;
}
}
🔍 해설
1. 두 숫자를 문자열로 변환하여
2. indexOf() 메서드로 위치를 찾고
3. 삼항연산자로 위의 결과값이 -1이면 -1을, 아니라면 +1을 하여 answer에 넣었다
✅ 개선할 점
1. 삼항연산자식을 더 단순하고 가독성 있게 만들 수 있다
answer = strnum.indexOf(strk);
return answer==-1 ? answer : answer+1;
2. num에 기호를 하나 추가하면 숫자 index를 1부터 셀 수 있게 돼서 더 간결하게 만들 수 있다
class Solution {
public int solution(int num, int k) {
return ("."+num).indexOf(Integer.toString(k));
}
}
📒 기억하고 갈 문법
int to String을 수행하는 두가지 방법이 있다
1. Integer.toString()
2. String.valueOf()
입력된 문자열이 null이라면
=> 첫번째는 null pointer 오류를 발생시키지만
=> 두번째는 "null"로 처리한다
null이면 오류일때에는 첫번째를,
오류가 아닌 상황에는 두번째를 사용하면 된다
* 참고 블로그: https://gocoder.tistory.com/2412
'코딩테스트 스터디' 카테고리의 다른 글
코딩테스트 연습 - 제곱수 판별하기 (JAVA) (0) | 2023.01.11 |
---|---|
코딩테스트 연습 - n의 배수 고르기 (JAVA) (0) | 2023.01.06 |
코딩테스트 연습 - 약수 구하기 (JAVA) (0) | 2023.01.06 |
코딩테스트 연습 - 7의 개수 (JAVA) (0) | 2023.01.06 |
코딩테스트 연습 - 다음에 올 숫자 (JAVA) (0) | 2022.12.28 |