알고리즘
항해 99 18일차 TIL( 대충 만든 자판 / 프로그래머스 )
순원이
2024. 4. 15. 17:40
문제
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
1 번째 시도
- 자료구조는 HashMap을 사용한다.
- HashMap에 알파벳마다 눌러야 하는 최소 횟수를 저장한다.
- Keymap의 알파벳을 탐색하며 알파벳마다 눌러야 하는 최소 횟수를 업데이트 해간다.
import java.util.*;
class Solution {
public int[] solution(String[] keymap, String[] targets) {
int n = keymap.length;
HashMap<Character, Integer> map = new HashMap<>();
for (int i = 0; i < n; i++) {
for (int j = 0; j < keymap[i].length(); j++) {
char key = keymap[i].charAt(j);
if (!map.containsKey(key)) {
map.put(key, j + 1);
} else {
int previousPosition = map.get(key);
map.put(key, Math.min(previousPosition, j + 1));
}
}
}
int[] result = new int[targets.length];
for (int i = 0; i < targets.length; i++) {
for (int j = 0; j < targets[i].length(); j++) {
char targetChar = targets[i].charAt(j);
if (map.containsKey(targetChar)) {
result[i] += map.get(targetChar);
} else {
result[i] = -1;
break;
}
}
}
return result;
}
}
알지 못했던 함수
- HashMap 해당 Key가 포함되어 있는지 확인하는 함수
boolean containsKey(Object Key)
- HashMap 해당 Value가 포함되어 있는지 확인하는 함수
-
boolean containsValue(Object Value)
-
- char → String
-
change = String.valueOf(cr); change = Character.toString(cr);
-
- String → char
-
char[] chr = str.toCharArray();
-
- 배열 특정 값으로 꽉채우기
-
Arrays.fill()
-