🔗 문제 링크
📝 풀이 과정
사이트 주소를 통해 비밀번호를 얻으면 되는 문제이다. N과 M의 범위가 10만이기 때문에 단순 반복문으로는 시간초과가 발생할 수 있다.
사이트가 중복되지 않고, Map
의 경우 get
과 set
의 연산 모두 $O(1)$이기 때문에 Map
을 사용하기로 했다.
Map<String, String>
을 통해 주소값을 key로 두고 비밀번호를 value로 저장하였고, 출력시 get(key)
를 활용해 비밀번호를 출력해주었다.
💡 문제에서 N과 M의 범위가 100,000인데 이를 Scanner
로 입력을 받고 System.out.println
으로 줄마다 출력을 해준다면 시간초과가 발생할 수 있으므로 입력은 BufferedReader
, 출력의 경우 StringBuilder
나 BufferedWriter
를 활용해보자.
💻 코드
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.Map;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String[] input = br.readLine().split(" ");
int N = Integer.parseInt(input[0]);
int M = Integer.parseInt(input[1]);
Map<String, String> map = new HashMap<>();
for (int i = 0; i < N; i++) {
input = br.readLine().split(" ");
map.put(input[0], input[1]);
}
StringBuilder sb = new StringBuilder();
for (int i = 0; i < M; i++)
sb.append(map.get(br.readLine())).append('\n');
System.out.println(sb.toString());
}
}
📊 제출 결과
'알고리즘 풀이 > 백준' 카테고리의 다른 글
[백준] 16236번: 아기 상어 - JAVA (0) | 2020.12.19 |
---|---|
[백준] 18870번: 좌표 압축 - JAVA (0) | 2020.12.17 |
[백준] 15686번: 치킨 배달 - JAVA (0) | 2020.12.17 |
[백준] 14500번: 테트로미노 - JAVA (1) | 2020.12.17 |
[백준] 11727번: 2×n 타일링 2 - JAVA (2) | 2020.12.15 |