본문 바로가기

6개월 대장정/JAVA 퀴즈

26일차 - 컬렉션 프레임 워크-Set컬렉션 Quiz

반응형

안녕하세요. pitang입니다.

컬렉션 프레임 워크 Set컬렉션에 대한 퀴즈를 풀어보겠습니당~

저번 List컬렉션의 방법과 같이 Junit으로 메서드를 검증하여 오류가 없으면 정답인 퀴즈들입니다!

 

Quiz 1번

파라미터 arr의 값들을 저장한 HashSet 객체를 리턴하는 메서드를 작성하세요.

아래의 junit으로 오류를 확인하세요.

class Ex01Test {

	@Test
	void test() {
		
		Ex01 e = new Ex01();
		
		Set<Integer> set1 = e.toSet(new int[] {3, 4, 5});
		assertEquals(3, set1.size());
		
		Set<Integer> set2 = e.toSet(new int[] {3, 4, 5, 6, 5,});
		assertEquals(4, set2.size());
		
	}

}

 

⬇️⬇️⬇️ 정답은 더보기를 눌러주세요 ⬇️⬇️⬇️

 

더보기
public class Ex01 {

	public Set<Integer> toSet(int[] arr) {
		
		// 파라미터 arr의 값들을 저장한 HashSet 객체를 리턴
		
		Set<Integer> set = new HashSet<>();
		
		for(int i = 0; i < arr.length; i++) {
			set.add(arr[i]);
		}
		
		return set;
	}
	
}

 

Quiz 2번

파라미터 arr의 값들을 저장한 HashSet 객체를 리턴하는 메서드를 향상된 for문으로 작성하세요. (1번과는 파라미터가 다릅니다.)

아래의 junit으로 오류를 확인하세요.

class Ex02Test {

	@Test
	void test() {
		
		Ex02 e = new Ex02();
		
		Set<String> set1 = e.toSet(new String[] {"java", "spring", "html"});
		assertEquals(3, set1.size());
		
		Set<String> set2 = e.toSet(new String[] {"java","Java","jAva","jaVa","javA"});
		assertEquals(5, set2.size());
		
		Set<String> set3 = e.toSet(new String[] {"spring","java","java","css","css"});
		assertEquals(3, set3.size());
		
	}

}

 

⬇️⬇️⬇️ 정답은 더보기를 눌러주세요 ⬇️⬇️⬇️

 

더보기
public class Ex02 {

	public Set<String> toSet(String[] arr) {
		
		Set<String> set = new HashSet<>();
		
		for(String item : arr) {
			set.add(item);	
		}
		
		return set;
	}
	
}

 

Quiz 3번

arr 배열에 중복된 값들만 set에 모아서 리턴하는 메서드를 작성하세요.

아래의 junit으로 오류를 확인하세요.

class Ex03Test {

	@Test
	void test() {
		
		Ex03 e = new Ex03();
		
		Set<Integer> set1 = e.dupSet(new int[] {1, 2, 3});
		assertEquals(0, set1.size());
		
		Set<Integer> set2 = e.dupSet(new int[] {3, 4, 5, 5});
		assertEquals(1, set2.size());
		
		Set<Integer> set3 = e.dupSet(new int[] {3, 4, 5, 3, 4, 5});
		assertEquals(3, set3.size());
		
	}

}

 

⬇️⬇️⬇️ 정답은 더보기를 눌러주세요 ⬇️⬇️⬇️

 

더보기
public class Ex03 {

	public Set<Integer> dupSet(int[] arr) {
		
		//arr 배열에 중복된 값들만 set에 모아서 리턴
		
		Set<Integer> set = new HashSet<>();
		Set<Integer> result = new HashSet<>();
		
		for(int e : arr) {
			if(set.contains(e)) {
				result.add(e);
			} else {
				set.add(e);
			}
		}
		return result;
	}
	
}

 

Quiz 4번

arr 배열에 중복된 값들만 set에 모아서 리턴하는 메서드를 작성하세요. (3번과는 파라미터가 다릅니다.)

아래의 junit으로 오류를 확인하세요.

class Ex04Test {

	@Test
	void test() {
		Ex04 e = new Ex04();
		
		Set<String> set1 = e.dupSet(new String[] {"cap", "ironman", "widow"});
		assertEquals(0, set1.size());
		
		Set<String> set2 = e.dupSet(new String[] {"rm", "jungkook", "bts", "bts"});
		assertEquals(1, set2.size());
		
		Set<String> set3 = e.dupSet(new String[] {"itzy", "itzy", "red", "velvet", "son", "son"});
		assertEquals(2, set3.size());
	}

}

 

⬇️⬇️⬇️ 정답은 더보기를 눌러주세요 ⬇️⬇️⬇️

 

더보기
public class Ex04 {

	public Set<String> dupSet(String[] arr) {
		
		//arr 배열에 중복된 값들만 set에 모아서 리턴 (문자열)
		Set<String> set = new HashSet<>();
		Set<String> result = new HashSet<>();
		
		for(String str : arr) {
			if(set.contains(str)) {
				result.add(str);
			} else {
				set.add(str);
			}
		}
		return result;
	}
	
}

 

Quiz 5번

str에 몇 개의 문자가 사용되었는지를 리턴하는 메서드를 작성하세요.

아래의 junit으로 오류를 확인하세요.

class Ex05Test {

	@Test
	void test() {
		Ex05 e = new Ex05();
		
		assertEquals(3, e.countLetter("cap"));
		assertEquals(3, e.countLetter("java"));
		assertEquals(6, e.countLetter("ironman"));
		assertEquals(1, e.countLetter("aaaaaaaaa"));
	}

}

 

⬇️⬇️⬇️ 정답은 더보기를 눌러주세요 ⬇️⬇️⬇️

 

더보기
public class Ex05 {

	public int countLetter(String str) {
		//str에 몇 개의 문자가 사용되었는지를 return
		
		Set<Character> set = new HashSet<>();
		
		for(int i = 0; i < str.length(); i++) {
			set.add(str.charAt(i));
		}
		
		return set.size();
	}
	
}

 

Quiz 6번

몇 개의 문자가 중복사용되었는지를 리턴하는 메서드를 작성하세요.

아래의 junit으로 오류를 확인하세요.

class Ex06Test {

	@Test
	void test() {
		Ex06 e = new Ex06();
		
		assertEquals(1, e.dupLetter("java"));
		assertEquals(0, e.dupLetter("spring"));
		assertEquals(1, e.dupLetter("aaaaaaaaaaaaaa"));
		assertEquals(3, e.dupLetter("captainamerica"));
	}

}

 

⬇️⬇️⬇️ 정답은 더보기를 눌러주세요 ⬇️⬇️⬇️

 

더보기
public class Ex06 {

	public int dupLetter(String str) {
		
		//몇 개의 문자가 중복사용되었는지?
		
		Set<Character> set = new HashSet<>();
		Set<Character> dup = new HashSet<>();
		
		for(int i = 0; i < str.length(); i++) {
			char c = str.charAt(i);
			
			if(set.contains(c)) {
				dup.add(c);
			} else {
				set.add(c);
			}

		}
		return dup.size();
	}
	
}

 

Quiz 7번

한번만 사용된 문자의 개수를 리턴하는 메서드를 작성하세요.

아래의 junit으로 오류를 확인하세요.

class Ex07Test {

	@Test
	void test() {
		Ex07 e = new Ex07();
		
		assertEquals(3, e.countOnlyLetter("abc"));
		assertEquals(2, e.countOnlyLetter("abca"));
		assertEquals(2, e.countOnlyLetter("java"));
		assertEquals(0, e.countOnlyLetter("aaaaaa"));
		
	}

}

 

⬇️⬇️⬇️ 정답은 더보기를 눌러주세요 ⬇️⬇️⬇️

 

더보기
public class Ex07 {
	
	public int countOnlyLetter(String str) {
		
		//한번만 사용된 문자의 개수
		Set<Character> set = new HashSet<>();
		Set<Character> dup = new HashSet<>();
		
		for(int i = 0; i < str.length(); i++) {
			char c = str.charAt(i);
			
			if(set.contains(c)) {
				dup.add(c);
			} else {
				set.add(c);
			}
		}
		
		for(Character c : dup) {
			set.remove(c);
		}
		return set.size();
	}
	
}

 

Quiz 8번

 

a 배열에만 있는 아이템들만 모은 set을 리턴하는 메서드를 작성하세요.

아래의 junit으로 오류를 확인하세요.

class Ex08Test {

	@Test
	void test() {
		Ex08 e = new Ex08();
		
		Set<Integer> set1 = e.diff(new int[] {1, 2, 3}, new int[] {2, 3, 4});
		assertEquals(1, set1.size());
		assertTrue(set1.contains(1));
		assertFalse(set1.contains(2));
		assertFalse(set1.contains(3));
		assertFalse(set1.contains(4));
	}

}

 

⬇️⬇️⬇️ 정답은 더보기를 눌러주세요 ⬇️⬇️⬇️

 

더보기
public class Ex08 {

	public Set<Integer> diff(int[] a, int[] b) {
		//a 배열에만 있는 아이템들만 모음 set 리턴
		
		Set<Integer> set = new HashSet<>();
		
		for(int item : a) {
			set.add(item);
		}
		
		for(int item : b)	 {
			set.remove(item);
		}
		
		return set;
	}
	
}

 

감사합니다.

 

*m1 맥북을 사용 중입니다.*

 

 

 

 

 

 

728x90
반응형