import java.util.HashMap;
class Solution {
public int[] solution(String[] keymap, String[] targets) {
int[] answer = new int[targets.length];
HashMap<Character, Integer> map = new HashMap<>();
for (String key : keymap) {
for (int i = 0; i < key.length(); i++) {
char c = key.charAt(i);
if (!map.containsKey(c) || i < map.get(c)) {
map.put(c, i+1);
}
}
}
for (int i = 0; i < targets.length; i++) {
int a = 0;
for (int j = 0; j < targets[i].length(); j++) {
char c = targets[i].charAt(j);
if(!map.containsKey(c)) {
a = 0;
break;
}
else {
a += map.get(c);
}
}
answer[i] = a == 0? -1 : a;
}
return answer;
}
}
Hashmap에 Char와 키값을 저장할 수 있어서 문제에서 요구하는 요건을 충족시킬 수 있었다. map.containsKey(c)를 통해 c와 같은 것이 Hashmap에 저장되어있는지 찾을 수 있고 map.get(c)를 통해 키값을 꺼낼 수도 있다.
IoC / DI
IoC는 제어의 역전이라는 뜻인데 예를 들어 원래는 레고를 가지고 여러가지를 만드는 사람이 자동차 레고 설계도, 비행기 레고 설계도 등을 만드는 것을, 제어의 역전을 통해 외부에서 만들어진 레고 설계도를 이용해서 레고를 만드는 방식으로 바꾸는 것이다. 이때 외부에서 만들어진 레고 설계도를 이용하는 것이 의존성 주입(DI)이다.
bean / IoC Container
의존성 주입하는 외부에서 만들어진 것 중에 bean이 있고 이 bean들을 담고 있는 것이 IoC Container이다. bean으로 의존성 주입할 때 쓰는 어노테이션은 @Autowired이다.
JPA / Hibernate
JPA는 자바 애플리케이션이 DB와 연동되기 위한 표준 규약이고 Hibernate는 그 표준 규약을 실제로 수행하는 구현체이다.
영속성 컨텍스트
영속성 컨텍스트는 Entity 객체를 DB로 commit하기 전에 등록해놓는 공간이다. em.persist() 메서드를 통해 entity 객체가 영속성 컨텍스트 안에 저장될 수 있다. 그리고 em.flush() 메서드를 통해 영속성 컨텍스트의 변경 사항을 DB Transaction에 동기화시킬 수 있고 commit으로 영구히 DB에 저장하게 된다.