Jam's story
[프로그래머스] 가장 가까운 같은 글자 java 본문
- answer배열은 정답을 반환할 배열
- answer[0]은 처음 나오는 문자이니 무조건 -1
- 이중 for문을 사용해서 검사
- answer[i]에는 i와 j의 거리를 넣기
- stack은 마지막으로 나온 값(j의 값)을 저장하기 위해서
- 그래서 stack size를 체크해서 똑같은 값이 2개 이상이면, 마지막 값을 pop() 이나 peek()해옴
- stack size가 0이라면 -1
import java.util.*;
class Solution {
public static int[] solution(String s) {
char[] arr=s.toCharArray();
int[] answer = new int[arr.length];
answer[0]=-1;
Stack<Integer> can=new Stack<>();
for (int i = 1; i < arr.length; i++) {
for (int j = 0; j <i; j++) {
if(arr[i]==arr[j]) {
can.push(j);
answer[i]=i-j;
}
}//for-j
if(can.size()>1) {
answer[i]=i-can.pop();
}else if(can.size()==0) {
answer[i]=-1;
}
can.clear();
}
return answer;
}
}
다시 풀어봤는데 더 간단하게 풀렸다.
import java.util.*;
class Solution {
public static int[] solution(String s) {
//정답을 반환할 배열
int[] answer =new int[s.length()];
//string -> char 배열로 쪼개기
char[] arr=s.toCharArray();
answer[0]=-1;
for (int i = 1; i < arr.length; i++) {
answer[i]=-1;
for (int j = 0; j <i; j++) {
if(arr[i]==arr[j]) {
answer[i]=i-j;
}
}//for-j
}
return answer;
}
}
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 크기가 작은 부분문자열 java (1) | 2022.12.24 |
---|---|
[프로그래머스] 제곱수판별하기 java (0) | 2022.12.24 |
[프로그래머스] 세균증식 JAVA (0) | 2022.12.21 |
[프로그래머스] 문자열 정렬하기(2) JAVA (0) | 2022.12.21 |
[프로그래머스] 잘라서 배열로 저장하기 java (0) | 2022.12.13 |
Comments