📝 문제
https://www.acmicpc.net/problem/10816
🔥 시도해본 접근 방식
99클럽 코테 스터디 13일차 TIL 숫자 카드
📝 문제https://www.acmicpc.net/problem/10815🔥 시도해본 접근 방식 입력으로 들어온 문자열중 2, 4번째 라인을 split(" ")을 통하여 배열로 만들고 반복문을 선언하여 4번째 라인 배열의 원소가 2번째 라
been1130.tistory.com
위 문제와 동일한 전략으로 접근하였고, 다만 이번에는 가지고 있는 갯수를 구해야 하므로 Map의 값에 카운트를 저장하도록 구현해보았다.
1️⃣ 첫번째 시도
import java.util.HashMap;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String ownCardCount = sc.nextLine();
String ownCardString = sc.nextLine();
String comparerCardCount = sc.nextLine();
String comparerCardString = sc.nextLine();
String[] comparerCards = comparerCardString.split(" ");
HashMap<String, Integer> hm = new HashMap<>();
for (String ownCardNumber : ownCardString.split(" ")) {
Integer cnt = hm.getOrDefault(ownCardNumber, 0);
hm.put(ownCardNumber, cnt + 1);
}
for (int i = 0; i < comparerCards.length; i++) {
System.out.print(hm.getOrDefault(comparerCards[i], 0));
if (i < comparerCards.length - 1) {
System.out.print(" ");
}
}
}
}
처음으로는 위와 같이 숫자 카드1 문제의 코드를 보완하여 제출하였는데 시간 초과가 발생했다.
이 코드에서 시간복잡도를 더 줄일 수 있는 방법을 생각해 보았으나, 더 줄일 수 는 없을 것 같았고
값을 출력할 때 비용이 많이 드는 print()가 여러번 호출 되는 것을 개선해 보기로 하였다.
✨ 성공 코드
import java.util.HashMap;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String ownCardCount = sc.nextLine();
String ownCardString = sc.nextLine();
String comparerCardCount = sc.nextLine();
String comparerCardString = sc.nextLine();
String[] comparerCards = comparerCardString.split(" ");
HashMap<String, Integer> hm = new HashMap<>();
for (String ownCardNumber : ownCardString.split(" ")) {
Integer cnt = hm.getOrDefault(ownCardNumber, 0);
hm.put(ownCardNumber, cnt + 1);
}
StringBuffer sb = new StringBuffer();
for (int i = 0; i < comparerCards.length; i++) {
sb.append(hm.getOrDefault(comparerCards[i], 0));
if (i < comparerCards.length - 1) {
sb.append(" ");
}
}
System.out.print(sb);
}
}
위와 같이 StrinBuilder를 사용하여 재제출을 하였더니 무사히 통과하였다.
앞으로는 print()를 반복하여 사용하지 말아야겠다.
'스터디 > 99클럽 코테 스터디 TIL' 카테고리의 다른 글
99클럽 코테 스터디 16일차 모음사전 (0) | 2024.08.07 |
---|---|
99클럽 코테 스터디 15일차 prefix-and-suffix-search (0) | 2024.08.06 |
99클럽 코테 스터디 13일차 TIL 숫자 카드 (0) | 2024.08.04 |
99클럽 코테 스터디 12일차 TIL H-Index (0) | 2024.08.03 |
99클럽 코테 스터디 11일차 TIL 카드 뭉치 (0) | 2024.08.01 |