코린이의 소소한 공부노트

[LeetCode/Medium] 677. Map Sum Pairs 본문

코딩테스트 풀이/JAVA

[LeetCode/Medium] 677. Map Sum Pairs

무지맘 2023. 3. 13. 14:21

목표: 문자열과 점수를 매핑하고, 접두어가 입력으로 들어오면 접두어로 시작하는 문자열들의 점수 합을 반환해주는 MapSum 클래스 구현

- 생성자 MapSum()

- insert(), sum()

 

1. Input

1) insert(): String key, int val

- 매핑될 문자열과 점수가 입력으로 들어온다.

2) sum(): String prefix

- 접두어가 입력으로 들어온다.

 

2. Output

1) insert() : void

- 문자열과 점수를 매핑해 저장한다.

2) sum(): int

- 접두어로 시작하는 문자열들의 점수 합을 반환한다.

 

3. Constraint

1) 1 <= key.length, prefix.length <= 50

2) keyprefix는 영어 소문자로만 이루어져 있다.

3) 1 <= val <= 1000

4) insert()sum()은 최대 50번까지 호출된다.

 

4. Example

MapSum mapSum = new MapSum();

mapSum.insert("apple", 3);

mapSum.sum("ap"); // return 3 (apple = 3)

mapSum.insert("app", 2);

mapSum.sum("ap"); // return 5 (apple + app = 3 + 2 = 5)

 

5. Code

1) 첫 코드(2023/03/13)

class MapSum {
    private HashMap<String, Integer> m;
    public MapSum() {
        m = new HashMap<String, Integer>();
    }

    public void insert(String key, int val) {
        m.put(key, val);
    }

    public int sum(String prefix) {
        int answer = 0;
        Iterator it = m.entrySet().iterator();
        while(it.hasNext()){
            Map.Entry e = (Map.Entry)it.next();
            String s = (String)e.getKey();
            if(s.length()>=prefix.length() && s.substring(0,prefix.length()).equals(prefix))
                answer += (int)e.getValue();
        }
        return answer;
    }
}