문제
https://school.programmers.co.kr/learn/courses/30/lessons/120904
풀이
1. num을 String 타입으로 바꾼다.
2. String 타입인 num2를 .toCharArray()를 이용해 각각의 문자로 나누어 char[] 배열에 저장한다.
3. for문을 이용해 n1[i]의 숫자가 k인지 확인한다.
이 과정에서 nu[i]는 char 타입이므로 int 타입인 k와 같지 않다. 따라서 n1[i]의 타입을 Character.getNumericValue()를 사용해 int 타입으로 변환해 주어야한다.
4. 같다면 i+1 의 값을 반환해준다. (왜냐하면 java에서 배열의 순서는 0부터 시작하기 때문에 문제에서 나온 것과 같이 첫번째 인덱스의 값이 1이라고 해야한다면 java 배열 인덱스+1의 숫자가 맞기 때문이다.)
5. 없다면 -1을 반환한다.
코드
class Solution {
public int solution(int num, int k) {
String num2 = num+"";
char[] n1 = num2.toCharArray();
for(int i=0; i<n1.length; i++){
if(Character.getNumericValue(n1[i]) == k){
return i+1;
}
}
return -1;
}
}
++
다른사람 풀이 추가.
다른사람이 푼 풀이가 너무 간단해서 풀이방식을 들고왔다.
class Solution {
public int solution(int num, int k) {
return ("-" + num).indexOf(String.valueOf(k));
}
}
풀이)
("-" + num) => num 앞에 "-" 를 추가함으로써 int 타입인 num을 String 타입으로 만들고, 숫자앞에 -를 하나 넣음으로써 배열에 넣었을때 숫자가 인덱스 1부터 시작하도록 만든것이다.
"-" 문자가 인덱스의 0을 차지하기 때문이다.
.indexOf(String.valueOf(k)) => String.valueOf(k)는 k를 문자열로 반환한다. 그리고 .indexOf()를 사용하여 k의 인덱스를 찾는 것이다.
.indexOf() 메소드는 반환할 값이 없으면 -1을 무조건 반환하여 해당 항목에 없음을 나타낸다.
반환할 값이 발견되면 문자열에서 지정된 값이 처음으로 나타나는 인덱스를 반환한다.
예를 들어서 num의 숫자가 123이고, k가 1이라면
("-" + num)에 의해 `-123` 이라는 문자열이 되고, .indexOf(String.valueOf(k)) 에 의해 1의 인덱스에 해당하는 `1`이 반환된다. 반환할 값이 없으면 -1을 반환한다.
'하루하루 > 프로그래머스 문제풀이' 카테고리의 다른 글
[Lv.0 - Java] 120912. 7의 개수 (1) | 2023.12.19 |
---|---|
[Lv.0 - Java] 120886. A로 B 만들기 (0) | 2023.12.18 |
[Lv.0 - Java] 120897. 약수 구하기 (0) | 2023.12.15 |
[Lv.0 - Java] 120834. 외계행성의 나이 (0) | 2023.12.13 |
[Lv.0 - Java] 120815. 피자 나눠 먹기 (2) (0) | 2023.12.12 |