문제
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 |