Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- array
- 코딩테스트
- bit manipulation
- Tree
- two pointers
- geometry
- Math
- string
- Data Structure
- database
- 코테
- dynamic programming
- Class
- hash table
- implement
- java
- Binary Tree
- 구현
- greedy
- Matrix
- sorting
- Stack
- Number Theory
- Method
- Binary Search
- Counting
- 파이썬
- 자바
- SQL
- simulation
Archives
- Today
- Total
코린이의 소소한 공부노트
[프로그래머스/Lv.1] 가장 가까운 같은 글자 본문
1. Input
1) String s
2. Output
1) s의 각 위치마다 자신보다 앞에 나왔으면서, 자신과 가장 가까운 곳에 있는 같은 글자가 어디 있는지 담은 배열
3. Constraint
1) 1 ≤ s의 길이 ≤ 10,000
2) s은 영어 소문자로만 이루어져 있다.
4. Example
Input: s="banana" -> Output: [-1, -1, -1, 2, 2, 2]
설명:
- b는 처음 나왔기 때문에 자신의 앞에 같은 글자가 없다. -> -1
- a는 처음 나왔기 때문에 자신의 앞에 같은 글자가 없다. -> -1
- n은 처음 나왔기 때문에 자신의 앞에 같은 글자가 없다. -> -1
- a는 자신보다 두 칸 앞에 a가 있다. -> 2
- n도 자신보다 두 칸 앞에 n이 있다. -> 2
- a는 자신보다 두 칸, 네 칸 앞에 a가 있다. 이 중 가까운 것은 두 칸 앞이다. -> 2
5. Code
1) 첫 코드(2023/02/14)
int[] answer = new int[s.length()];
HashMap<Character,Integer> m = new HashMap<Character,Integer>();
for(int i=0 ; i<s.length() ; i++){
if(m.containsKey(s.charAt(i)))
answer[i] = i-m.get(s.charAt(i));
else
answer[i] = -1;
m.put(s.charAt(i), i);
}
return answer;
- 다른 사람들의 코드를 살펴보니, lastIndexOf()나 getOrDefault()를 쓰는 것을 볼 수 있었다. 아직 공부를 더 많이많이 해야 한다.
'코딩테스트 풀이 > JAVA' 카테고리의 다른 글
[LeetCode/Medium] 398. Random Pick Index (0) | 2023.02.16 |
---|---|
[LeetCode/Medium] 384. Shuffle an Array (0) | 2023.02.15 |
[LeetCode/Easy] 383. Ransom Note (0) | 2023.02.14 |
[LeetCode/Easy] 382. Linked List Random Node (0) | 2023.02.14 |
[프로그래머스/Lv.1] 크기가 작은 부분문자열 (0) | 2023.02.09 |