본문 바로가기

Coding Test/Step14. 집합과 맵

(8)
[Java] 8단계. 서로 다른 부분 문자열의 개수 [11478번] 항해99를 하면서 풀어봤던 문제지만 다시 한 번 풀어보기https://www.acmicpc.net/problem/11478예제 입력1ababc예제 출력112문제 접근입력첫째줄 : 문자열 SS는 알파벳 소문자로만 이루어져 있고, 길이는 1,000 이하출력첫째 줄에 S의 서로 다른 부분 문자열 개수 출력문제 해결길이가 1 (a, b, c)부터 길이가 5(ababc)까지 중복되지 않는 문자열의 개수를 체크중복이 되지 않아야하기 때문에 컬렉션의 Set 사용기존 풀이 [메모리 : 226,680 KB / 시간 : 628 ms]public static void main(String[] args) throws IOException { Set set = new HashSet(); BufferedReader b..
[Java] 7단계. 대칭 차집합 [1269번] https://www.acmicpc.net/problem/1269예제 입력13 51 2 42 3 4 5 6예제 출력14문제 접근입력첫째 줄 : 집합 A의 원소 개수, 집합 B의 원소 개수둘째 줄 : 집합 A의 원소셋째 줄 : 집합 B의 원소원소 개수 원소 값 출력대칭 차집합의 원소 개수 출력문제 해결A 집합에만 있는 원소 개수 + B 집합에만 있는 원소 개수를 출력하는 문제A와 B의 교집합 개수를 구한 뒤, (A집합 원소 개수 - 교집합개수) + (B집합 원소 개수 - 교집합개수)를 출력하면 해결다르게 묶으면 A 집합 원소 개수 + B 집합 원소 개수 - (교집합개수 * 2)Map에 A집합, B집합 모든 원소를 넣는데 교집합이 아니면 true, 교집합이면 false로하여 false의 개수만 세어 A + ..
[Java] 6단계. 듣보잡 [1764번] https://www.acmicpc.net/problem/1764예제 입력13 4ohhenriecharliebaesangwookobamabaesangwookohhenrieclinton예제 출력12baesangwookohhenrie문제 접근입력첫째 줄 : 듣도 못한 사람 수 N, 보도 못한 사람 수 M (1~ N번째 줄 : 듣도 못한 사람 이름~ M번째 줄 : 보도 못한 사람 이름듣도 못한 사람, 보도 못한 사람 명단에는 중복되는 이름이 없음출력듣도 보도 못한 사람의 수와 명단을 사전순 출력즉, N과 M에 모두 포함되는 사람(교집합) 사전순 출력 문제문제 해결중복이 되지 않기 때문에 굳이 두 개의 저장소를 만들지 말고 Map으로 N과 M 관계 없이 Map에 사람 이름(Key)으로 숫자를 카운팅(Value)..
[Java] 5단계. 숫자 카드 2 [10816번] 항해99를 하면서 풀어봤던 문제지만 다시 한 번 풀어보기https://www.acmicpc.net/problem/10816예제 입력1106 3 2 10 10 10 -10 -10 7 3810 9 -5 2 3 4 5 -10예제 출력13 0 0 1 2 0 0 2문제 접근입력첫째 줄 : 상근이가 가진 카드 개수 N (1 둘째 줄 : 숫자 카드에 적힌 정수 (-10,000,000 셋째 줄 : M (1 넷째 줄 : 상근이가 몇 개 가지고 있는 숫자 카드인지 비교할 숫자 카드 (-10,000,000 출력네 번째 줄에 있는 카드를 상근이가 몇 개 가지고 있는지를 공백으로 구분하여 한 줄 출력문제 해결숫자 카드 1 문제와 달라진 점은 상근이가 가진 숫자 카드(둘째 줄)이 중복되어 카운팅을 해야하는 것방법1) 배열을 이용..
[Java] 4단계. 나는야 포켓몬 마스터 이다솜 [1620번] https://www.acmicpc.net/problem/1620예제 입력126 5BulbasaurIvysaurVenusaurCharmanderCharmeleonCharizardSquirtleWartortleBlastoiseCaterpieMetapodButterfreeWeedleKakunaBeedrillPidgeyPidgeottoPidgeotRattataRaticateSpearowFearowEkansArbokPikachuRaichu25Raichu3PidgeyKakuna예제 출력1Pikachu26Venusaur1614문제 접근입력첫째 줄 : 도감에 저장된 포켓몬 개수 N, 맞춰야하는 문제 개수 M(1 ~ N개 줄 : 포켓몬의 이름이 알파벳으로 된 문자열 → 도감 등록 (2 ~ M개 줄 : 맞춰야하는 문제로..
[Java] 3단계. 회사에 있는 사람 [7785번] 항해99를 하면서 풀어봤던 문제지만 다시 한 번 풀어보기https://www.acmicpc.net/problem/7785예제 입력14Baha enterAskar enterBaha leaveArtem enter예제 출력1AskarArtem문제 접근입력첫째 줄 : 로그에 기록된 출입 기록 수 n(2 n개의 줄 : 사람이름 출입기록(enter, leave)회사에 동명이인은 없으며, 대소문자가 다른 경우 다른 사람사람이름은 알파벳 대소문자로 5글자 이하의 문자열출력현재 회사에 있는 사람의 이름을 사전 순의 역순으로 한 줄에 한 명씩 출력문제 해결TreeSet을 사용하여 사전 역순으로 정렬되도록 하고 들어오면 add, 나가면 remove하여 TreeSet에 남은 사람만 출력하는 방식으로 해결 가능다만 문제를 확장..
[Java] 2단계. 문자열 집합 [14425번] https://www.acmicpc.net/problem/14425예제 입력15 11baekjoononlinejudgestartlinkcodeplussundaycodingcodingshbaekjooncodepluscodeminusstartlinkstarlinksundaycodingcodingshcodinghssondaycodingstartrinkicerink예제 출력14문제 접근입력으로 주어지는 문자열은 알파벳 소문자로만 이루어져 있으며, 길이는 500을 넘지 않고, 집합 S에 중복된 문자열은 주어지지 않음 입력첫째 줄 : 문자열 개수 N과 M(1 N개의 줄 : 집합 S에 포함되어 있는 문자열이 주어짐M개의 줄 : 검사해야하는 문자열출력M개의 문자열 중 총 몇 개가 집합 S에 포함되는 지 출력문제 해결1..
[Java] 1단계. 숫자 카드 [10815번] 항해99를 하면서 풀어봤던 문제지만 다시 한 번 풀어보기https://www.acmicpc.net/problem/10815예제 입력156 3 2 10 -10810 9 -5 2 3 4 5 -10예제 출력11 0 0 1 1 0 0 1문제 접근입력첫째 줄 : 숫자 카드의 개수(1 둘째 줄 : 숫자 카드에 적혀있는 정수(-10,000,000 ~ 10,000,000)셋째 줄 : M(1 넷째 줄 : 상근이가 가진 숫자카드인지 아닌지를 구해야할 M개의 정수(-10,000,000~10,000,000)출력첫째 줄에 입력으로 주어진 M개의 수에 대해서, 각 수가 적힌 숫자 카드를 상근이가 가지고 있으면 1, 아니면 0으로 공백으로 구분해 출력문제 해결상근이가 가진 카드의 숫자들(둘째 줄)을 N번(첫째 줄)만큼 Set에 추..