728x90
문자열 묶기
https://school.programmers.co.kr/learn/courses/30/lessons/181855
문제 설명
문자열 배열 strArr이 주어집니다. strArr의 원소들을 길이가 같은 문자열들끼리 그룹으로 묶었을 때 가장 개수가 많은 그룹의 크기를 return 하는 solution 함수를 완성해 주세요.
제한 사항
- 1 ≤ strArr의 길이 ≤ 100,000
- 1 ≤ strArr의 원소의 길이 ≤ 30
- strArr의 원소들은 알파벳 소문자로 이루어진 문자열입니다.
입출력 예
strArr | result |
["a","bc","d","efg","hi"] | 2 |
풀이
1. 정답으로 리턴할 정수형 변수 answer를 0으로 초기화한다.
2. 100001개의 정수형 배열 변수 countArr을 만든다.
3. 입력받은 문자열의 배열의 길이만큼 다음 로직을 반복한다.
- 문자열 배열의 현재 위치의 문자열 길이를 정수형 변수 index에 저장한다.
- countArr에 해당 인덱스 위치에 1을 더한다.
4. Arrays 클래스에 stream을 이용해 가장 큰 값을 찾는다. 이 값은 OptionalInt이다.
5. OptionalInt를 int로 바꿔 answer에 저장한다.
6. answer 값을 리턴한다.
코드
import java.util.Arrays;
import java.util.OptionalInt;
class Solution {
public int solution(String[] strArr) {
int answer = 0;
int [] countArr = new int[100001];
for(int i = 0; i < strArr.length; i++) {
int index = strArr[i].length();
countArr[index]++;
}
OptionalInt max = Arrays.stream(countArr).max();
answer = max.getAsInt();
return answer;
}
}
728x90