백준 1620 나는야 포켓몬 마스터 이다솜 JAVA

sundays·2023년 8월 10일
0

문제

나는야 포켓몬 마스터 이다솜

풀이

일단 Iterator를 사용하여 걸러내는 방법을 일차적으로 사용하였으나, 시간초과가 났다. Stream을 사용한 코드도 마찬가지이다.

1차 풀이

		..
		for (int i = 0; i < m; i++) {
            String s = br.readLine();
            if (Character.isDigit(s.charAt(0))) { // 숫자
                sb.append(hm.get(Integer.parseInt(s)));
            } else { // 이름
                sb.append(hm.entrySet().stream().filter(e -> e.getValue().equals(s))
                	.mapToInt(e -> e.getKey()).sum());
            }
            sb.append("\n");
        }
        ..

다른 분들 풀이를 살펴보니 메모리 구조로 배열을 하나 더 추가하여 시간을 단축하는 방법을 사용하여야 하는 것 같다

나같은 경우에는 문자열 배열 하나를 추가해주고, hashMap을 Integer가 Value에 오게 한 후에 첫 문자가 isDigit이면 HashMap을 조회해서 Value을 추가 해주는 것으로 로직을 변경하였다

		HashMap<String, Integer> hm = new HashMap<>();
        String[] arr = new String[n + 1];
        for (int i = 1; i <= n; i++) {
            String s = br.readLine();
            hm.put(s, i);
            arr[i] = s;
        }

근데.. 아직도 스트림을 쓸때 자꾸 자동완성키를 사용하려고 하는데, 연습해야겠따

전체 코드

전체 코드

profile
develop life

0개의 댓글