티스토리 뷰

문제설명
입력과 출력

👶🏼 첫번째 코드

>> 자바 스터디로 알게된 ArrayList를 쓰면 쉽게 풀리지 않을까 싶어서 썼는데 답은 나오지만 시간초과가 걸렸다. 

String 배열을 모두 ArrayList로 옮긴다음에 r(remove) 리스트에 넣고, p(participant) 리스트에 추가해주는 함수이다.

 

	public static String solution(String[] participant, String[] completion) {
		ArrayList<String> p = new ArrayList<>();
		ArrayList<String> c = new ArrayList<>();
		ArrayList<String> r = new ArrayList<>();
		
		for (int i=0; i<participant.length;i++) {
			p.add(participant[i]);
		}
		for (int i=0; i<completion.length;i++) {
			c.add(completion[i]);
		}
		
		for (String comp : c) {
			if (p.contains(comp)) {
				r.add(comp);
			}
		}
		for (String remo : r ) {
			p.remove(remo);
		}
		
		return p.get(0);      
	}

👦🏼 두번째 코드

>> 위와 같은 비슷한 방법의 코드인데  ArrayList를 쓰지않았고, 겹치는게 있으면 participant배열에서 "1"로 만들어 이름을 지워주는 방식으로 하였다. 

마찬가지로 정답은 잘 나오지만 시간초과가 걸린다. 

    public String solution(String[] participant, String[] completion) {
		int index = 0;
		String answer =null;
		for (int i=0; i<participant.length;i++) {
			for (int j=0;j<completion.length;j++) {
				if (participant[i].equals(completion[j])) {
					participant[i] = "1";
					completion[j] = "2";
					break;
				}
			}
		}
		for (int i=0; i<participant.length;i++) {
			if (participant[i] != "1") 
				answer = participant[i];
		}
		return answer; 
    }

👱🏼 새번째 코드 (성공)

>> 두 배열을 모두 정렬해준다음에 서로 같지않으면 return 하도록 하였다. 

순서대로 정렬하고 비교한다면 누가 빠졌는지 알수있겠지.. 

    public static String solution(String[] participant, String[] completion) {
    	String answer = null;
    	Arrays.sort(participant);
    	Arrays.sort(completion);
    	for (int i=0;i<completion.length;i++) {
    		if (!(participant[i].equals(completion[i]))) return participant[i]; //다르면 return
    	}
		return participant[participant.length-1]; // 마지막까지 안나오면 마지막애 return
    }

👴🏼 해쉬맵을 사용한 코드 

>>

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
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
글 보관함