5. K번째 큰 수
·
자바 알고리즘 문제풀이/HashMap, TreeSet(해쉬, 정렬지원 Set)
1. 문제 현수는 1부터 100사이의 자연수가 적힌 N장의 카드를 가지고 있습니다. 같은 숫자의 카드가 여러장 있을 수 있습니다. 현수는 이 중 3장을 뽑아 각 카드에 적힌 수를 합한 값을 기록하려고 합니다. 3장을 뽑을 수 있는 모든 경우를 기록합니다. 기록한 값 중 K번째로 큰 수를 출력하는 프로그램을 작성하세요. 만약 큰 수부터 만들어진 수가 25 25 23 23 22 20 19......이고 K값이 3이라면 K번째 큰 값은 22입니다. K번째 값이 존재하지 않으면 -1을 출력 2 - 1. 나의 풀이 풀지 못했다. 3 - 1. 강의 풀이 알고보니 매우 쉬운 문제다. 카드 3장의 합을 구하는 방법을 어떻게 해야할지 고민하고있었다. 1. 그냥 노가다로 삼중 for문 돌리면된다. 2. TreeSet에 3..
4. 모든 아나그램 찾기
·
자바 알고리즘 문제풀이/HashMap, TreeSet(해쉬, 정렬지원 Set)
1. 문제 설명 S문자열에서 T문자열과 아나그램이 되는 S의 부분문자열의 개수를 구하는 프로그램을 작성하세요. 아나그램 판별시 대소문자가 구분됩니다. 부분문자열은 연속된 문자열이어야 합니다. 입력 첫 줄에 첫 번째 S문자열이 입력되고, 두 번째 줄에 T문자열이 입력됩니다. S문자열의 길이는 10,000을 넘지 않으며, T문자열은 S문자열보다 길이가 작거나 같습니다. 출력 S단어에 T문자열과 아나그램이 되는 부분문자열의 개수를 출력합니다. 입력 bacaAacba abc 출력 3 힌트 출력설명: {bac}, {acb}, {cba} 3개의 부분문자열이 "abc"문자열과 아나그램입니다. 2 -1. 나의 풀이 HashMap의 equals 메소드를 모르고 있다가 구글링해서 알았다. sliding window로 Ha..
3. 매출액의 종류
·
자바 알고리즘 문제풀이/HashMap, TreeSet(해쉬, 정렬지원 Set)
1. 문제 현수의 아빠는 제과점을 운영합니다. 현수아빠는 현수에게 N일 동안의 매출기록을 주고 연속된 K일 동안의 매출액의 종류를 각 구간별로 구하라고 했습니다. 만약 N=7이고 7일 간의 매출기록이 아래와 같고, 이때 K=4이면 20 12 20 10 23 17 10 각 연속 4일간의 구간의 매출종류는 첫 번째 구간은 [20, 12, 20, 10]는 매출액의 종류가 20, 12, 10으로 3이다. 두 번째 구간은 [12, 20, 10, 23]는 매출액의 종류가 4이다. 세 번째 구간은 [20, 10, 23, 17]는 매출액의 종류가 4이다. 네 번째 구간은 [10, 23, 17, 10]는 매출액의 종류가 3이다. N일간의 매출기록과 연속구간의 길이 K가 주어지면 첫 번째 구간부터 각 구간별 매출액의 종류..
2. 아나그램(해쉬)
·
자바 알고리즘 문제풀이/HashMap, TreeSet(해쉬, 정렬지원 Set)
1. 문제 Anagram(아나그램) 나열 순서는 다르지만 그 구성이 일치하는 두 단어 아나그램이면 YES, 아니면 NO를 출력하시오. 대소문자는 구분한다. 2 - 1. 나의 풀이 아나그램인지 확인하기 위해 필요한 조건. 1. 순서는 상관없음 2. 문자와 해당 문자의 개수 문자를 key, 문자의 개수를 value로 하는 HashMap을 사용한다. 한 단어가 다른 단어를 포함하는 관계 ex(abc, abcd)일 경우를 생각해야한다. map1의 key를 기준으로 두 단어의 value 비교하고 map2의 key를 기준으로 두 단어의 value를 비교했다. 근데 그냥 한 번만 비교해도 정답처리긴 하더라.... 머지 -> 문자열의길이도 같아야하므로 한번만 비교해도 된다! 근데 HashMap에 저장하기 위해 for문..
1. 학급 회장
·
자바 알고리즘 문제풀이/HashMap, TreeSet(해쉬, 정렬지원 Set)
1. 문제 A B C D E 후보 중 가장 많이 뽑힌 학생을 학급 회장으로한다. 학급 회장으로 선택된 기호를 출력하시오. 2 - 1. 나의 풀이 나의 JAVA 컬렉션 파트 미숙으로 강의를 수강하고 문제를 풀었다. 빨리 "JAVA의 정석" 컬렉션 파트를 수강하고 정리하는 글을 써야겠다. 3 - 1. 강의 풀이 HashMap을 사용했다. HashMap.put(key, value) - HashMap에 key와 value 저장한다. HashMap.get(key) - 해당 key값의 vaule를 반환한다. HashMap.getOrDefult(key, int) - 해당 key가 있으면 vulue를 반환, 없으면 Default 로 정한 int 반환 HashMap.keySet() - 모든 key 반환 HashMap.s..