728x90
💡 완주하지 못한 선수
문제 설명
수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다.
마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수들의 이름이 담긴 배열 completion이 주어질 때, 완주하지 못한 선수의 이름을 return 하도록 solution 함수를 작성해주세요.
✍ 문제 풀이
1. 요약
배열을 sort 처리해 **같은 index, 다른 이름**으로 이름 수가 다른 경우를 찾아낸다.
2. 방법 :
- Arrays.sort(array); 를 통해 전부 정렬한다.
- int는 for문이 아니라 밖에서 선언 해야한다.
+ 안에서 선언할 경우, 더 짧은 completion까지밖에 i가 올라갈 수 없다.
그 뒤에 중복이 된 participant[i]를 구하기 위해 i는 for 외부에 따로 하자. - 시간을 줄이기 위해 그때그때 return으로 해결한다.
답이 나왔는데 전부 for문을 돌리는 건 answer 메모리, 시간 전부 낭비될 수 있다.
3. 소스 코드
import java.util.*;
class Solution {
public String solution(String[] participant, String[] completion) {
Arrays.sort(participant);
Arrays.sort(completion);
int i;
for(i =0; i < completion.length ; i++){
if (!participant[i].equals(completion[i])){
return participant[i];
}
};
return participant[i];
}
}
✍ 회고
개인적으로 풀고싶었던 방식이 있다!
가능만 했다면, if(participant[i]의 전체 count > completion[i]의 전체 count) 를 만족하는 participant의 요소를 찾아냈을 것이다.
만족하는 요소가 없다면 paricipant의 가장 마지막 요소가 정답일 것!
for문 1회 만으로도 충분히 가능할 것 같았는데...
빠르게 돌릴 수 있는 메서드가 부족해서 아쉽다...
효율적인 메서드를 직접 만들기엔 너무 시간이 부족하기도 했고...
728x90
'프로그래밍(Programming) > 알고리즘' 카테고리의 다른 글
💡 프로그래머스 : 신규 아이디 추천 (0) | 2023.05.01 |
---|---|
프로그래머스 : 스킬트리 (0) | 2022.12.21 |
다음에 올 숫자 (0) | 2022.11.09 |
프로그래머스 : 옹알이(1) (0) | 2022.11.07 |
[프로그래머스] 평행 (0) | 2022.11.02 |