프로그래머스의 완주하지 못한 선수를 풀어보았다.

 

링크

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

문제

 

풀이


참여자 명단과 완주자 명단을 비교하여 완주하지 못한 선수를 찾으면 됩니다.
변수에 참여자를 저장하고 완주는 제거해주면 마지막에 남아있는 선수가 완주하지 못한 선수입니다.

playerCheck 함수에 기능을 구현했습니다.

public void playerCheck(HashSet<String> set, String[] players) {
    for (String p : players) {
        if (set.contains(p)) {
            set.remove(p);
            continue;
        }
        set.add(p);
    }
}

 

매개변수를 받으면 playerCheck 함수를 사용하여 완주하지 못한 선수를 선별합니다.

public String solution(String[] participant, String[] completion) {
    String answer = "";
    HashSet<String> set = new HashSet<>();
    playerCheck(set, participant);
    playerCheck(set, completion);
    answer = set.toString();
    return answer.substring(1, answer.length()-1);
}

 

 

전체코드

public void playerCheck(HashSet<String> set, String[] players) {
    for (String p : players) {
        if (set.contains(p)) {
            set.remove(p);
            continue;
        }
        set.add(p);
    }
}

public String solution(String[] participant, String[] completion) {
    String answer = "";
    HashSet<String> set = new HashSet<>();
    playerCheck(set, participant);
    playerCheck(set, completion);
    answer = set.toString();
    return answer.substring(1, answer.length()-1);
}

 

후기

* 난이도 (5점 만점)

5 : 풀 줄 알면 기업 코딩 테스트는 문제없음.

4 : 평균적인 기업 코딩 테스트의 중간 이상.

3 : 평균적인 기업 코딩테스트의 쉬운 문제.

2 : 알고리즘 문제를 연습하고 있다면 풀 수 있는 문제.

1 : 시간이 오래 걸리지 않고, 누구나 풀 수 있는 문제.

 

[프로그래머스] 완주하지 못한 선수를 Arrays.sort 함수를 이용하여 반복문을 돌리면 쉽게 풀었지만
해쉬 문제였기 때문에 해쉬로 다시 풀었다.
둘 다 해보는 것 추천

+ Recent posts