99클럽 코테 스터디 14일차 TIL 숫자 카드2

2024. 8. 4. 14:28·스터디/99클럽 코테 스터디 TIL

📝 문제

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
'스터디/99클럽 코테 스터디 TIL' 카테고리의 다른 글
  • 99클럽 코테 스터디 16일차 모음사전
  • 99클럽 코테 스터디 15일차 prefix-and-suffix-search
  • 99클럽 코테 스터디 13일차 TIL 숫자 카드
  • 99클럽 코테 스터디 12일차 TIL H-Index
Been
Been
  • Been
    Been
    Been
  • 전체
    오늘
    어제
    • 분류 전체보기 (60)
      • 언어 (0)
        • Kotlin (0)
      • 안드로이드 (17)
      • iOS (3)
      • Git (1)
      • 스터디 (39)
        • 알고리즘 문제 풀이 (1)
        • 99클럽 코테 스터디 TIL (38)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    밑줄제거
    언더라인 제거
    Coroutines
    항해99
    FragmentStateAdapter
    깃
    RecyclerView
    개발자취업
    Android
    Androiod
    AndroidID
    아이폰
    객체변환
    TIL
    EditText
    maxWidth
    풀이실패
    java
    Git
    자바
    debugRuntimeClasspath
    쓰기권한
    리싸이클러뷰
    WRITE EXTERNAL
    99클럽
    NSR
    코딩테스트준비
    안드로이드
    IOS
    nsl
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
Been
99클럽 코테 스터디 14일차 TIL 숫자 카드2
상단으로

티스토리툴바