공부/알고리즘, 자료구조 13

[프로그래머스] 위장

※ 해당 문제의 링크는 여기입니다. ※ public int solution(String[][] clothes) { HashMap parts = new HashMap(); for (String[] clothe : clothes) { String key = clothe[1]; parts.put(key, parts.getOrDefault(key, 0) + 1); } int answer = 1; for (Map.Entry entry : parts.entrySet()) { answer *= entry.getValue() + 1; } return answer - 1; } HashMap를 사용하여 풀었습니다. 각 위치에 따른 원소가 몇 개인지만 파악하면 금방 풀 수 있기에 getOrDefault를 사용하였습니다. g..

[프로그래머스] 전화번호 목록

※ 해당 문제의 링크는 여기입니다. ※ 위 방식은 HashSet 방식을 사용하는 방식이 있지만 배열로만 해결하였습니다. public boolean solution(String[] phoneBook) { Arrays.sort(phoneBook); for (int i = 0; i < phoneBook.length - 1; i++) { if (phoneBook[i + 1].startsWith(phoneBook[i])) { return false; } } return true; } 전화부를 정렬합니다. 전화부 길이 - 1 까지 for문을 돌립니다. 전화부[i + 1]의 시작부분이 현재 전화부 번호이라면 false를 반환합니다. 전부 다 찾았는 데도 false가 반환되지않았다면 중복이 없으므로 true를 반환합니..

[프로그래머스] 완주하지 못한 선수

※ 해당 문제의 링크는 여기입니다. ※ key와 value를 사용하여 문제를 해결해야하는 문제라는 것은 파악했지만 굳이 HashMap를 사용해야하는 가에 대한 의문이 들어 그냥 배열을 사용하여 문제를 해결했습니다. public String solution(String[] participant, String[] completion) { // 선수 목록에는 있지만, 완주자 목록에 없으면 // 해당 선수 이름을 반환 // 둘 다 정렬하면 해당 위치에 동일한 이름이 올라갈 것임 Arrays.sort(participant); Arrays.sort(completion); int i; for (i = 0; i < completion.length; i++) { if (!completion[i].equals(partic..