본문 바로가기
코딩테스트/프로그래머스 기초

[코딩테스트 Lv.0] 문자열 묶기

by 블루데이제이 2024. 8. 10.
728x90
반응형
문제 설명

문자열 배열 strArr이 주어집니다. strArr의 원소들을 길이가 같은 문자열들끼리 그룹으로 묶었을 때 가장 개수가 많은 그룹의 크기를 return 하는 solution 함수를 완성해 주세요.

제한사항
● 1 ≤ strArr의 길이 ≤ 100,000
    ○ 1 ≤ strArr의 원소의 길이 ≤ 30
    ○ strArr의 원소들은 알파벳 소문자로 이루어진 문자열입니다.
입출력 예
strArr				result
["a","bc","d","efg","hi"]	2
입출력 설명
입출력 예 #1
각 문자열들을 길이에 맞게 그룹으로 묶으면 다음과 같습니다.

문자열 길이	문자열 목록	개수
1		["a","d"]	2
2		["bc","hi"]	2
3		["efg"]		1
개수의 최댓값은 2이므로 2를 return 합니다.

 

내 풀이
Java
import java.util.*;
class Solution {
    public int solution(String[] strArr) {
        int answer = 0;        
        int arr[] = new int[100000];
        
        for(String s : strArr){
            arr[s.length()]++;
        }
        
        Arrays.sort(arr);
        
        return arr[arr.length - 1];
    }
}
C
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>

// strArr_len은 배열 strArr의 길이입니다.
// 파라미터로 주어지는 문자열은 const로 주어집니다. 변경하려면 문자열을 복사해서 사용하세요.
int solution(const char* strArr[], size_t strArr_len) {
    int answer = 0;
    int arr[100000] = {0,};
    int i = 0;
    for(i = 0; i < strArr_len; i++){
        arr[strlen(strArr[i])]++;
    }
    arr[i] = '\0';
    
    
    for(i = 0; i < sizeof(arr) / sizeof(arr[0]); i++){        
        if(answer < arr[i]){
            answer = arr[i];
        }    
    }
    
    return answer;
}
Python
def solution(strArr):
    answer = []
    list = [len(i) for i in strArr]
        
    for i in set(list):
        answer.append(list.count(i))
    
    return max(answer)

https://school.programmers.co.kr/learn/courses/30/lessons/181855

728x90
반응형