자바/백준

[백준 1764] 듣보잡_2

슈슈버거 2024. 8. 16. 02:31

문제

https://www.acmicpc.net/problem/1764


내가 작성한 코드

import java.util.*;
import java.io.*;

public class qor1764_2 {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String[] numberInput = br.readLine().split(" ");

        int N = Integer.parseInt(numberInput[0]);
        int M = Integer.parseInt(numberInput[1]);

        Set<String> noneSee = new HashSet<>();
        for (int i = 0; i < N; i++) {
            noneSee.add(br.readLine());
        }

        List<String> finalName = new ArrayList<>();
        for (int i = 0; i < M; i++) {
            String name = br.readLine();
            if (noneSee.contains(name)) {
                finalName.add(name);
            }
        }

        Collections.sort(finalName);

        System.out.println(finalName.size());
        for (String name : finalName) {
            System.out.println(name);
        }
    }
}

 

 

기존 코드에서 for문이 지나치게 많은 것 같았다.

그래서 for문을 줄이면서 조금 더 코드를 효율적으로 짤 수 있지 않을까 싶어 이번에는

코드의 효율성에 집중해 작업을 진행했다.

  • 불필요한 조건문 제거: Set 자료구조는 중복을 허용하지 않으므로, 중복 체크를 위한 if 조건문을 제거했다.
    • 자료형에 대한 이해를 하며 수정한 부분이다.
  • 교집합 계산 간소화: 두 번째 리스트를 읽으면서 첫 번째 Set의 이름을 바로 확인하고, 일치하면 바로 추가하도록
  • for문 호출 방식 변경 : 마지막 for문에서 ":"을 이용해서 조금 더 간결하게 for문 내에 인자를 주는 법을 시도함

 

'자바 > 백준' 카테고리의 다른 글

[백준 1672] DNA 해독  (0) 2024.08.16
[백준 9076] 점수 집계  (0) 2024.08.16
[백준 2506] 점수계산  (0) 2024.08.16
[백준 10798] 세로읽기  (0) 2024.08.16
[백준 1032] 명령 프롬프트  (0) 2024.08.16