본문 바로가기

Coding Test

(131)
[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에 추..
[Java] 11단계. 좌표 압축 [18870번] https://www.acmicpc.net/problem/18870예제 입력152 4 -10 4 -9예제 출력12 3 0 3 1예제 입력261000 999 1000 999 1000 999예제 출력21 0 1 0 1 0문제 접근가장 작은 값을 0으로 설정하고 그 다음 작은 값을 1로 설정하면서 멀리 떨어진 좌표들을 0~?까지 압축하는 것으로 예상 됨동일한 값이 주어진다면 같은 좌표로 취급N은 최대 100만개의 숫자가 주어질 수 있으므로 시간 복잡도가 O(N^2)인 알고리즘을 선택 시 1조번 연산(10000초)가 되어 시간 초과가 나올 것출력 ⇒ 압축한 좌표를 공백으로 출력문제 해결오름차순 정렬 필요선택, 삽입, 버블 정렬 사용 시 시간 초과최소 O(NlogN)이상의 알고리즘 사용 필요 (Heap, Quic..
[Java] 10단계. 나이순 정렬 [10814번] https://www.acmicpc.net/problem/10814예제 입력1321 Junkyu21 Dohyun20 Sunyoung예제 출력120 Sunyoung21 Junkyu21 Dohyun문제 접근입력회원수 N (1 ≤ N ≤ 10,000)N개의 줄만큼 회원의 나이와 이름이 공백으로 가입한 순서대로 입력→ 이름 : 알파벳 대소문자→ 나이 : 1 ~ 200출력나이 오름 차순나이가 같을 경우 가입 순서한 줄에 한 명씩 나이와 이름을 공백으로 출력문제 해결가입한 순서로 정렬도 하기 때문에 입력 받은 순서대로 인덱스가 필요회원 클래스를 생성하여 index, age, name을 매개 변수로 가지고 Comparable을 상속 받아 정렬기존 풀이 [메모리 : 53864 KB / 시간 : 632 ms]static..