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
- Class
- string
- 구현
- two pointers
- simulation
- Counting
- Stack
- implement
- Number Theory
- Math
- array
- 자바
- 코테
- sorting
- Data Structure
- Binary Tree
- 코딩테스트
- geometry
- Matrix
- java
- 파이썬
- database
- dynamic programming
- hash table
- Binary Search
- Method
- greedy
- SQL
- Tree
- bit manipulation
Archives
- Today
- Total
코린이의 소소한 공부노트
[프로그래머스/Lv.1] 대충 만든 자판 본문
1. Input
1) String[] keymap
- 자판의 키가 담긴 배열로, keymap[i]에는 해당 키를 n번 눌렀을 때 입력되는 문자들이 담겨있다.
// 예를 들어 keymap[0] = "ABACD" 인 경우 키를 한 번 누르면 A, 두 번 누르면 B, 세 번 누르면 A 가 된다.
2) String[] targets
- keymap을 이용해 입력할 문자열이 담겨있다.
2. Output
1) targets[i]를 작성하려할 때 눌러야 하는 최소 횟수를 담은 int[]
2) targets[i]를 작성할 수 없다면 -1를 저장
3. Constraint
1) 1 ≤ keymap의 길이 ≤ 100
2) 1 ≤ keymap의 원소의 길이 ≤ 100
3) keymap의 원소의 길이는 서로 다를 수 있다.
4) 1 ≤ targets의 길이 ≤ 100
5) 1 ≤ targets의 원소의 길이 ≤ 100
6) keymap, targets의 원소는 알파벳 대문자로만 이루어져 있다.
4. Example
Input: keymap=["ABACD", "BCEFD"], targets=["ABCD","AABB"] -> Output: [9,4]
설명:
- "ABCD"의 경우: 키1 1회(A) -> 키2 1회(B) -> 키2 2회(C) -> 키1 5회(D)로 총 9번
- "AABB"의 경우: 키1 1회(A) -> 키1 1회(A) -> 키2 1회(B) -> 키2 1회(B)로 총 4번
5. Code
1) 첫 코드(2023/02/23)
import java.util.*;
int[] answer = new int[targets.length];
HashMap<Character,Integer> m = new HashMap<Character,Integer>();
for(String s : keymap){
for(int i=0 ; i<s.length() ; i++){
if(m.containsKey(s.charAt(i)))
m.put(s.charAt(i),Math.min(m.get(s.charAt(i)),i+1));
else
m.put(s.charAt(i),i+1);
}
}
for(int i=0 ; i<targets.length ; i++){
for(int j=0 ; j<targets[i].length() ; j++){
if(m.containsKey(targets[i].charAt(j)))
answer[i]+=m.get(targets[i].charAt(j));
else{
answer[i] = -1; break;
}
}
}
return answer;
'코딩테스트 풀이 > JAVA' 카테고리의 다른 글
[LeetCode/Easy] 496. Next Greater Element I (0) | 2023.02.26 |
---|---|
[LeetCode/Easy] 492. Construct the Rectangle (0) | 2023.02.26 |
[프로그래머스/Lv.2] 행렬의 곱셈 (0) | 2023.02.22 |
[LeetCode/Easy] 455. Assign Cookies (0) | 2023.02.22 |
[LeetCode/Medium] 454. 4Sum II (0) | 2023.02.22 |