본문 바로가기
🍪 Ect/#Study

[99클럽 코테 스터디] 5일차 TIL 해시

by 개발한 너굴씨 2024. 7. 26.
728x90

 

 

오늘의 문제는 프로그래머스

 

 

완주하지 못한 선수

 

 

문제

 

 

 

 

문제 접근 및 풀이 과정

권장 풀이 시간은 30분이었고, 저는 18분이 걸렸습니다.

문제의 주요 키워드는 '해시'였으며, 처음에는 해시맵을 이용한 풀이를 생각했으나, 익숙지 않아서 완전 탐색 방식으로 해결했습니다. 추후 해시맵을 이용한 방법으로 다시 풀어볼 계획입니다.

 

 

 

문제 접근 방식

주어진 키워드가 '해시맵'이었으므로 해시맵을 사용하는 것이 맞겠지만, 익숙하지 않아 완전 탐색을 사용했습니다.

 

 

문제 풀이

class Solution {
    public String solution(String[] participant, String[] completion) {
        String answer = " ";
        int p_len = participant.length;
        int c_len = completion.length;

        for (int i = 0; i < c_len; i++) {
            for (int j = 0; j < p_len; j++) {
                if (completion[i].equals(participant[j])) {
                    participant[j] = " "; 
                    break;  
                }
            }
        }

        for (int i = 0; i < p_len; i++) {
            if (!participant[i].equals(" ")) {
                answer = participant[i];
                break;
            }
        }

        return answer;
    }
}

 

 

완주자 배열과 참가자 배열 비교하기

 

이 문제는 완주자 배열과 참가자 배열을 비교하여 완주하지 못한 선수를 찾는 것입니다. 이를 위해 두 배열을 순회하면서, 완주자 배열에 있는 선수와 일치하는 참가자 배열의 요소를 빈 문자열로 대체하는 방식으로 해결했습니다.

 

 

반복문 자세히 알아보기

1. 첫 번째 반복문: completion 배열을 순회하며 participant 배열에서 일치하는 요소를 빈 문자열로 대체합니다.

2. 두 번째 반복문: participant 배열을 순회하면서, 빈 문자열이 아닌 첫 번째 요소를 찾아 반환합니다.

 

개선할 점

 

현재 코드는 이중 반복문을 사용하여 시간 복잡도가 O(n^2)으로 비효율적입니다. 따라서 해시맵을 통한 풀이로 최적화할 필요가 있습니다.

 

 

 

 

해시맵을 통한 풀이

- -

 

 

 

 

 

 

 

 

 

 

 

이렇게 오늘 5일차 TIL을 작성해 보았습니다.

728x90

댓글