티스토리 뷰
[Java/boj(백준)]
1453. 피시방 알바
입력
손님의 수 N. N은 100보다 작거나 같다.
둘째 줄에 손님이 들어오는 순서대로 각 손님이 앉고 싶어하는 자리가 주어짐.
출력
거절당하는 사람의 수
풀이
package boj;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
// 손님의 수 N
int N = Integer.parseInt(br.readLine());
// 현재 피시방의 착석 상황을 저장하는 HashMap
HashMap<Integer, Boolean> customer = new HashMap<Integer, Boolean>();
// 거절당한 손님의 수를 저장하는 변수
int reject = 0;
StringTokenizer st = new StringTokenizer(br.readLine());
while(st.hasMoreElements()) {
int num = Integer.parseInt(st.nextToken());
if(customer.getOrDefault(num, false)) {
// 만약 값이 true일 경우 이미 자리가 채워져 있는 것이므로 거절
reject++;
} else{
// 착석 가능. HashMap value를 true로 변경
customer.put(num, true);
}
}
System.out.println(reject);
}
}
리뷰
비교적 쉽게 해결할 수 있었던 문제!!
해결 후에 다른 분들 풀이하신 것도 확인해 봤는데 내 풀이가 메모리나, 속도면에서 크게 차이나는 풀이는 아닌 것 같았다.
배열의 길이를 100으로 정의하고 해결하신 분들도 있던데 (N이 100보다는 무조건 작거나 같기 때문에)
그것보다는 hashMap을 사용해 N의 길이만큼의 데이터를 저장하는게 더 낫다고 생각했던 것 같다.
사실 어떤 문제든 Collection을 사용해서 문제를 풀고 싶어하는 느낌이 없지 않은 것 같다...ㅎㅎ
채점 결과
'Algorithm' 카테고리의 다른 글
[Java/Programmers] Lv.1 폰켓몬 (0) | 2021.04.07 |
---|---|
[Java/백준(boj)] 2010번. 플러그 (0) | 2021.03.06 |
[Java/백준(boj)] 2145번. 숫자놀이 (0) | 2021.02.26 |
[python/백준(boj)] 1316번. 그룹 단어 체커 (0) | 2021.02.18 |
[python/백준(boj)] 2941번. 크로아티아 알파벳 | python replace() 함수 알아보기 (0) | 2021.02.18 |
댓글