===========답변================
public class Solution {
public HashMap<String, String> convertListToHashMap(String[][] arr) {
// TODO:
/*
참고사항
arr[i].length는 0 or 2 라고 나와있음.
{}안의 요소가 0개 혹은 2개 라는 말임, 하지만 arr.length(행의 수)는 모름.
arr[i][0] : Key
arr[i][1] : value
<문제 해결 순서>
1. 문제대로 HashMap<String, String> 생성해서 진행.
2. map.put(arr[i][0], arr[i][1]) 넣으면됨.
주의사항
1. 중복되는 키의 경우, 초기의 값 사용
2. 빈 배열을 입력받으면 빈 HashMap을 리턴.
*/
HashMap<String, String> map = new HashMap<String, String>();
// 빈 배열일 경우, 빈 HashMap 리턴.
if (arr.length == 0) {
return map;
}
// arr.length는 미지수임으로 for문 i 진행.
for (int i = 0; i < arr.length; i++) {
// arr[i].length는 0 혹은 2라고했음. 2라는 것으로 if문 진행. // 왜그런지 모름;;
if (arr[i].length != 0) {
// map이 arr[i][0]을 가지고 있지 않을 경우, (아마 중복된 키값이 없을 경우라는 뜻인듯.)
// 정확히 if (!map.containsKey(arr[i][0]))
// 이 코드가 어째서 key(arr[i][0])가 중복일 경우 초기의 값을 사용하는건지 문의드린 상태.
>> // if (!map.containsKey(arr[i][0])) 라는 말은
최초 map에 주어진 key arr[i][0]이 없을 경우에만 key arr[i][0]을 할당하라 라는 뜻으로
한번 비어진 map key에 arr[i][0]으로 할당하면 그 값으로 map의 key를 계속 유지한다는 뜻으로 보이는 것 같다.
같은 key가 들어오더라도 이미 최초 빈 map에 할당된 key arr[i][0]를 대체하라는 말이 없으므로 처음 배정된 key 유지.
if (!map.containsKey(arr[i][0])) {
map.put(arr[i][0],arr[i][1]);
}
}
}
return map;
}
}
============================== 추가 Update ======================
>> // if (!map.containsKey(arr[i][0])) 라는 말은
최초 map에 주어진 key arr[i][0]이 없을 경우에만 key arr[i][0]을 할당하라 라는 뜻으로
한번 비어진 map key에 arr[i][0]으로 할당하면 그 값으로 map의 key를 계속 유지한다는 뜻으로 보이는 것 같다.
같은 key가 들어오더라도 이미 최초 빈 map에 할당된 key arr[i][0]를 대체하라는 말이 없으므로 처음 배정된 key 유지
>> if(!result.containsKey(arr[i][0])) { 의 경우 저 조건이 없다면,
Map의 특성상 중복된 Key가 들어오면 중복된 Key에 해당하는 Value를 교체해버린다.
그러므로 최초 해당 Key가 없을 경우에만 Key를 할당한다는 조건이 필요.
반대로 중복된 Key가 있으면 새로운것으로 대체한다 라는 상황이라면 저 조건문을 아예 없애거나 !만 없애면 된다.
Map의 특성상 중복된 Key가 들어오면 중복된 Key에 해당하는 Value를 교체해버린다.
그러므로 최초 해당 Key가 없을 경우에만 Key를 할당한다는 조건이 필요.
반대로 중복된 Key가 있으면 새로운것으로 대체한다 라는 상황이라면 저 조건문을 아예 없애거나 !만 없애면 된다.
'알고리즘 문제 풀이' 카테고리의 다른 글
<알고리즘 Q1 - Greedy> 짐 나르기 // 답변 외움. (0) | 2022.11.27 |
---|---|
Q5. firstReverse (0) | 2022.11.27 |
Q4. firstCharacter (0) | 2022.11.27 |
Q3. powerOfTwo // 마지막 return 이해 안됨 (0) | 2022.11.27 |
Q6. letterCapitalize // uppercase와 substring 의 사용 이해 완료 (0) | 2022.11.25 |