막무가내로 삽질하는 알고리즘

JewelsAndStones

Jungsoomin :) 2020. 10. 18. 14:57
  • List 사용, subStr 로 잘라 비교해서 count 증가
  • 리턴
public class JewelsAndStones {
	public static void main(String[] args) {
		String J = "aA";
		String S = "aAAbbbb";
		
		int answer = solve(J,S);
		System.out.println(answer);
	}
	
	/**
	 * 각 문자는 돌의 종류를 나타낸다. 각 돌에서 보석이 몇개 있는지 알려달라.
	 * @param j
	 * @param s
	 * @return
	 */
	private static int solve(String j, String s) {
		//List 를 이용해서 문자열을 잘라 놓고 비교한다.
		if(s.length() == 0) {
			return 0;
		}
		int answer = 0;
		
		List<String> list = Arrays.asList(j.split(""));
		
		for(int i=0; i<s.length(); i++) {
			if(list.contains(s.substring(i, i+1))) {
				answer += 1;
			}
		}
		
		
		return answer;
	}
}

  • HashSet 은 순서가 없고, 중복되지않는 자료구조, 순서는 중요하지 않으니 Set을 씀
  • 향상된 for 문으로 쉽게 Char 값을 빼낼 수 있음!
  • 값을 비교해서 count 증가
  • 리턴
public class JewelsAndStonesTeaching {
	public static void main(String[] args) {
		String J = "aA";
		String S = "aAAbbbb";
		
		int answer = solve(J,S);
		System.out.println(answer);
	}
	
	/**
	 * 보석은 대소문자를 구분해서 가져야한다.
	 * 스톤에서 보석을 비교 
	 * 
	 * HashSet == 중복을 허용하지 않고 순서가 없는 자료구조
	 * @param j
	 * @param s
	 * @return
	 */
	private static int solve(String jew, String stone) {
		Set<Character> set = new HashSet<Character>();
		
		//향상된 for문으로 뽑아낸다
		for(char j : jew.toCharArray()) {
			set.add(j); // 보석 문자 a , A
		}
		
		int count = 0;
		
		for(char s : stone.toCharArray()) {
			if(set.contains(s)) {
				count ++;
			};
			
		}
		
		
		return count;
	}
}

'막무가내로 삽질하는 알고리즘' 카테고리의 다른 글

다리를 지나는 트럭  (0) 2020.10.19
LicenseKeyFormatting  (0) 2020.10.18
MeetingRoom2  (0) 2020.10.18
우선순위 큐  (0) 2020.10.18
Merge Interval  (0) 2020.10.11