ABOUT ME

-

Today
-
Yesterday
-
Total
-

Post Calendar

«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
  • 4월 1주차 회고
    고찰 2024. 4. 8. 17:10

    📌 금주 학습

    • 알고리즘 코딩테스트가 매주 진행되고 있는데, 풀면서도 이전에 학습했던 자료구조와 알고리즘 개념들을 실전에 적용하면서 해결하지 못했던 부분들이 존재했다.

     

    • 비교적 이론과 개념들은 숙지했다고 생각했으나 실제 코드에 녹여내고 해당 내용들을 끌고와서 알고리즘을 구현해보았으나 주간 코딩 테스트에서 계속해서 오류가 나고, 원하는 출력값을 도출해내지 못한 부분이 있었다.

     

    • 그래서 문제 풀이 강의를 조금 더 세심하게 직접 타이핑하면서 '백문이 불여일타' 의 심정으로 Practice 문항들을 다시 복기하는 과정을 거쳤다. 2주차도 계속해서 동일하게 진행할 예정이다.



    📌 리마인드 내용

    • 주어진 정수 배열에서 중복된 숫자 쌍의 개수를 계산하는 문제
    import java.util.*;
    
    class Solution {
        public int solution(int[] nums) {
            Map<Integer, Integer> countMap = new HashMap<>();
    
            for(int num : nums) {
                countMap.put(num, countMap.getOrDefault(num, 0) + 1);
            }
    
            int totalCount = 0;
    
            for(int count : countMap.values()) {
                if(count >= 2) {
                    totalCount += count * (count - 1) / 2; 
                }           
            }
    
            return totalCount;
        }
    }

     

    • int[] nums 를 매개변수로 받음
    • countMap 이란 이름의 HashMap 생성
    • 이 맵은 정수를 키로하고, 해당 정수의 등장 횟수를 값으로 갖음
    • 주어진 배열 nums 를 반복하면서 countMap 에 각 숫자의 등장 횟수를 저장
      • countMap.put(num, countMap.getOrDefault(num, 0) + 1) 코드 사용
      • getOrDefault 메서드 => 해당 키가 존재하지 않을 때 기본값으로 0을 반환

    • totalCount 라는 변수를 초기화하고, countMap 의 값들을 순회하면서 중복된 숫자 쌍의 개수를 계산
    • 중복된 숫자 쌍의 개수를 계산할 때, 각 숫자가 등장한 횟수를 고려하여 계산
      • 특정 숫자가 n번 등장했다면, 해당 숫자로 만들 수 있는 중복된 쌍의 개수는 n * (n - 1) / 2
      • 이는 해당 숫자가 등장한 횟수에서 2개를 선택하는 경우의 수를 의미
      • 계산된 중복된 숫자 쌍의 개수를 totalCount 에 누적하여 반환



    📌 차주 계획

    • 금주 코딩 테스트 문제 중에 메모리 제한 관련된 문항들도 있었고, 제약사항을 활용한 문제들이 있어서 이와 관련되서 코드를 어떻게 작성하고, 대비를 해야하는지 고민해보는 시간을 갖아볼 계획이다.

     

    • 차주까지 계획된 강의를 수강하고, 이전에 자바, 자료구조, 알고리즘 관련된 이론 및 실습 내용을 정리한 포스팅도 적극적으로 업로드할 계획이다.

     

    • 특히 Map 관련해서 코딩 테스트에서도 그렇고, 실제 적용하기가 쉽지 않은 부분이 존재해서 이와 관련된 내용은 더욱 세심하게 살펴보고, 확실히 내 것으로 만들 수 있도록 시간 투자를 해볼 것이다.

    댓글

Designed by Tistory.