-
가장 많은 취미 찾기algorithm 2018. 7. 26. 10:31반응형
문제
사람들은 각각 두가지의 취미를 가지고 있다고 한다. 취미는 String 배열인 first와 second에 나누어져 들어온다. 예를 들어 i번째 사람의 첫번째 취미는 first[i] 에 문자열로 저장되어 있고, 두번째 취미는 second[i] 에 저장되어 있다. 이때 가장 많은 사람들이 즐기는 취미 생활은 총 몇 명이 즐기고 있는지 리턴하라.
입 출력 예제
입력
String[] first = {'a','b','a','a'};
String[] second = {'b','a','b','b'};
출력
4
풀이
단순히 생각해서 이중반복문을 사용해서 전체 배열을 돌면서 같은 이름의 숫자를 세면 된다. 이중반복문을 사용하는 것이 코드를 지저분하게 보이기 때문에 Map객체를 이용해 조금 더 간결한 코드를 얻을 수 있다. Map을 사용하는 것이 쉽게 떠올려지지 않는다면 이중반복문을 사용해도 상관없다.
12345678910111213141516171819202122public int hobby(String[] first, String[] second) {Map<String, Integer> map = new HashMap<>();for (int i = 0; i < first.length; i++) {map.put(first[i], 0);map.put(second[i], 0);}for (int i = 0; i < first.length; i++) {map.put(first[i], map.get(first[i])+1);map.put(second[i], map.get(second[i])+1);}int max = 0;for (Integer n : map.values()) {if (n > max) {max = n;}}return max;}cs 반응형'algorithm' 카테고리의 다른 글
악수 문제(카달란 수) (0) 2018.07.31 기부금 최대값 찾기 (0) 2018.07.30 배낭 문제(냅색 문제) (0) 2018.07.29 가장 먼 출구 찾기 (너비우선탐색) (0) 2018.07.27 가장 큰 곱 만들기 문제 (0) 2018.07.26