강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

김지협님의 프로필 이미지
김지협

작성한 질문수

38군데 합격 비법, 2025 코딩테스트 필수 알고리즘

1-5. 알고리즘과 친해지기 (2)

1-5 알고리즘과 친해지기 (2) - 최빈값찾기 질문 있습니다

작성

·

18

·

수정됨

0

1. 현재 학습 진도

  • 몇 챕터/몇 강을 수강 중이신가요?

    • 8.1-5 알고리즘과 친해지기 (2) - 최빈값찾기

  • 어떤 알고리즘을 학습하고 계신가요?

    • 최빈값 찾기

       

2. 어려움을 겪는 부분

  • 어느 부분에서 막히셨나요?

    • 왜 배열로 푸는 것이 제일 낫나요?

    • 저는 java의 map을 사용해서 풀었는데 이건 좋지 않은 풀이법일까요?

       

 

3. 시도해보신 내용

  • 현재 작성하신 코드를 공유해주세요

public class FindMaxOccurredAlphabet0102 {
  public static void main(String[] args) {
    System.out.println("정답 = i 현재 풀이 값 = " + solution("hello my name is dingcodingco"));
    System.out.println("정답 = e 현재 풀이 값 = " + solution("we love algorithm"));
    System.out.println("정답 = b 현재 풀이 값 = " + solution("best of best youtube"));
  }

  public static char solution(String s) {
    Map<Character, Integer> map = new HashMap<>();
    for (int i = 0; i < s.length(); i++) {
      char c = s.charAt(i);
      if (!Character.isLetter(c)) {
        continue;
      }
      map.put(c, map.getOrDefault(c, 0) + 1);
    }
    List<Map.Entry<Character, Integer>> list = new ArrayList<>(map.entrySet());
    list.sort(
        (a, b) -> b.getValue() - a.getValue()
    );
    return list.get(0).getKey();
    }
}

답변 1

0

안녕하세요, 인프런 AI 인턴입니다. 김지협님.

질문해주신 내용은 최빈값 찾기에 대한 다양한 접근 방식입니다. Java의 Map을 사용하여 문제를 풀어주셨는데요, 이 방법은 충분히 좋은 방법입니다. 다만 배열과 비교하여 각각의 장점과 단점이 있기에 이를 잘 이해하고 활용하는 것이 중요합니다.

배열과 Map의 차이

  1. 배열:

    • 고정 길이: 배열은 정해진 크기를 가지고 있습니다. 따라서 메모리 사용이 고정적이며, 효율적인 면이 있습니다. 예를 들어, ASCII 알파벳의 경우 크기는 26으로 고정되며, 직관적으로 알파벳의 빈도를 세는 데 용이합니다.
    • 빠른 접근: 인덱스를 통해 빠르게 접근 가능하여, 특정한 경우 더 빠른 성능을 발휘할 수 있습니다.
  2. Map:

    • 유연성: 다양한 자료형의 키를 사용할 수 있고, 크기가 동적이어서 입력 데이터에 따라 유연하게 크기를 조정할 수 있습니다.
    • 가독성: 키-값 쌍을 사용하므로 읽고 이해하기가 쉬울 수 있습니다.

Java 코드 평가

  • 가독성과 직관성: Map을 사용하여 알파벳의 빈도를 계산하고, 정렬하여 최빈 알파벳을 찾는 방식은 가독성이 좋고 이해하기 쉽습니다.
  • 다양한 데이터 처리: 다양한 입력 데이터 형태를 처리할 수 있어 범용성이 높습니다.

하지만 이 코드에서는 사전 순으로 가장 앞에 위치한 알파벳을 반환하지 않고, 값들이 정렬되어 있는 순서에 따라 가장 높은 빈도의 첫 번째 문자를 반환합니다. 동일한 빈도의 알파벳이 있을 때 사전 순으로 먼저 오는 문자를 반환하는 기능이 필요하다면, 조금 더 수정이 필요할 수 있습니다.

참고할 만한 자료

최빈값 찾기에 대해 다양한 방법을 다룬 기존 답변을 참고하시면 좋습니다:

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

김지협님의 프로필 이미지
김지협

작성한 질문수

질문하기