Nulog
article thumbnail

List, Set, Map 관련 연습문제 - 주로 각 인터페이스에서 활용되는 메서드의 활용방법을 연습시키는 문제였던 듯 싶다.

따라서 적절한 메서드만 찾아내면 되는 문제였고, 난이도 자체는 어렵지 않았다.

오늘은 잘 몰랐던 문제들만 정리했다.

 


Map 순회

Map을 순회하는 방법 포스팅

1. 처음에 작성한 코드. keySet을 이용한 Map 순회 방법을 전혀 몰랐다.

package com.codestates.coplit; 
import java.util.*;

public class Solution { 
  public int addOddValues(HashMap<Character, Integer> hashMap) {
    //TODO..
    Character[] arr = new Character[]{}; // 키셋을 배열로 만들어, for문이 순회할 수 있도록 배열 선언
    arr=(hashMap.keySet()).toArray(new Character[hashMap.size()]); // 키셋을 배열로
    int sum = 0 ;
    for(int i =0; i < hashMap.size();i++){
      if(hashMap.get(arr[i])%2==0){
        sum += hashMap.get(arr[i]);
      }
    }
    return sum;
  }
}

2. 향상된 for문을 이용한 keySet 순회를 한다면, 아래와 같이 가능하지 않을까

package com.codestates.coplit; 
import java.util.*;

public class Solution { 
  public int addOddValues(HashMap<Character, Integer> hashMap) {
    //TODO..
 
    int sum = 0 ;
    for(Character key : hashMap.keySet()){
	  int value = hashMap.get(key);
      if(value%2==0){
        sum += value;
      }
    }
    return sum;
  }
}

 

한 단어 내 알파벳 사용횟수 구하기

예시 : helloworld

출력 : ('h',1), ('e',1) ('l',3), ('o',2),('w',1),('r',1),('d',1)

 

처음에 내가 짠 코드. 반복문이 의도대로 돌지 않아서 바로 폐기했다.

package com.codestates.coplit; 
import java.util.*;

public class Solution { 
  public HashMap<Character, Integer> countAllCharacter(String str) {
    //TODO..
    int value = 0;
    HashMap<Character, Integer> hashMap = new HashMap<Character, Integer>();
    for(int i = 0; i <str.length();i++){
      char ch = str.charAt(i);
      for(int j = 0; j < str.length;j++){
        if (ch == str.charAt(j)) {
                value++;
            }
      }
      hashMap.put(ch,value);
    }
    return hashMap;
  }
}

3개월 뒤 다시 쓴 코드

import java.util.*;

public class Solution { 
  public HashMap<Character, Integer> countAllCharacter(String str) {
    //TODO..
    if(str.length()==0) return null;
    
    HashMap<Character, Integer> cnt = new HashMap<>();
    for(char ch : str.toCharArray()){
      cnt.put(ch, cnt.getOrDefault(cnt.get(ch),0) + 1);
   }
   return cnt;
    } 
  }

 

profile

Nulog

@Nuni0617

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!