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 | 31 |
Tags
- Matrix
- Number Theory
- sorting
- simulation
- array
- Data Structure
- java
- 코테
- geometry
- hash table
- 파이썬
- SQL
- Class
- Binary Search
- string
- implement
- greedy
- database
- Method
- Stack
- dynamic programming
- 구현
- 자바
- Counting
- Tree
- Math
- two pointers
- bit manipulation
- 코딩테스트
- Binary Tree
Archives
- Today
- Total
코린이의 소소한 공부노트
[LeetCode/Easy] 821. Shortest Distance to a Character 본문
1. Input
1) 문자열 s
2) 문자열 c
3) c는 s에 나타나는 문자 중 하나다.
2. Output
1) s에 있는 각 문자에 대해 가장 가까운 c까지와의 거리를 담은 정수 배열
3. Constraint
1) 1 <= s.length==answer.length <= 10^4
2) s와 c는 영어 소문자로만 구성되어있다.
3) c는 s에 적어도 하나 있다.
4. Example
Input: s = "loveleetcode", c = "e" -> Output: {3,2,1,0,1,0,0,1,2,2,1,0}
Explanation: e는 s에서 3, 5, 6, 11번째에 있다.
- l은 3번째 e와 가까우므로 abs(0-3) = 3
- o는 3번째 e와 가까우므로 abs(1-3) = 2
- 4번째에 위치한 l은 3번째 e와 5번째 e 사이에 끼어있는데, 어느쪽으로 계산해도 거리는 1이다.
- 이런식으로 쭉 계산하면 Output과 같은 결과를 얻게 된다.
5. Code
1) 첫 코드(2022/07/26)
List<Integer> index = new ArrayList();
for(int i=0 ; i<s.length() ; i++)
if(s.charAt(i)==c)
index.add(i);
int[] output = new int[s.length()];
for(int i=0 ; i<s.length() ; i++){
int dif = s.length();
for(int j=0 ; j<index.size() ; j++)
if(Math.abs(i-index.get(j))<dif)
dif = Math.abs(i-index.get(j));
output[i] = dif;
}
return output;
'코딩테스트 풀이 > JAVA' 카테고리의 다른 글
[LeetCode/Easy] 832. Flipping an Image (0) | 2022.12.08 |
---|---|
[LeetCode/Easy] 824. Goat Latin (0) | 2022.12.08 |
[LeetCode/Easy] 806. Number of Lines To Write String (0) | 2022.12.07 |
[LeetCode/Easy] 804. Unique Morse Code Words (0) | 2022.12.07 |
[LeetCode/Easy] 796. Rotate String (0) | 2022.12.07 |