[프로그래머스/181855] 문자열 묶기
in Study / Coding Test
☑️ 문제
- 주어진 문자열 배열
strArr
에서 같은 길이를 가진 문자열의 개수 중 최댓값을 구하는 문제
☑️ 풀이
첫 번째 풀이
//시간: 7.40ms
//메모리: 106MB
class Solution {
public int solution(String[] strArr) {
int[] check = new int[30];
int max = 0;
for (int i = 0; i < strArr.length; i++) {
int size = strArr[i].length() - 1;
check[size]++;
max = Math.max(max, check[size]);
}
return max;
}
}
check
배열을 사용하여 문자열 길이별 개수를 저장하였다.Math.max(max, check[size])
를 사용하여 최댓값을 지속적으로 갱신했고, 최종적으로max
를 반환하였다.- 배열을 사용했기 때문에 실행속도가 빨랐다.
두 번째 풀이
//시간: 55.22ms
//메모리: 102MB
import java.util.*;
class Solution {
public int solution(String[] strArr) {
Map<Integer, Integer> map = new HashMap<>();
int max = 0;
for (int i = 0; i < strArr.length; i++) {
int size = strArr[i].length();
if (map.getOrDefault(size, 0) == 0) {
map.put(size, 1);
} else {
map.put(size, map.get(size) + 1);
max = Math.max(max, map.get(size));
}
}
return max;
}
}
HashMap
을 사용하여 문자열 길이를Key
, 개수를Value
로 저장하였다.HashMap
은 문자열 길이의 제한 없이 관리할 수 있다는 장점이 있지만, 이 문제는 문자열의 최대 길이가 고정되어 있기 때문에 배열을 사용하는 게 더 빨라보인다.