일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 백준 14938번 서강그라운드
- 프로그래머스
- ac 5430번
- mysql hy000 에러
- 백준 3190번
- 프로그래머스 자바
- 18111번 마인크래프트 - java 구현
- kotlin
- HashMap
- 백준 2467번 용액 자바 - 이분탐색
- Stack
- dp
- 프로그래머스 java
- Java
- append
- HashSet
- hash
- toUpperCase
- 백준 1043번 거짓말 - java 분리 집합
- 코틀린기초
- 백준 1541
- StringTokenizer
- 백준 2473번 세 용액 - java
- 백준 1806번 부분합 java
- 백준 1197번 최소 스패닝 트리 - java
- replace()
- StringBuilder
- 백준 1647번 도시 분할 계획 - java
- map
- 최소 힙 1927
Archives
- Today
- Total
말하는 컴공감자의 텃밭
백준 25192번 인사성 밝은 곰곰이 <S4> - Hash 본문
728x90
귀여운 곰곰이가 눈에 뛰는 문제이다.
문제를 정리하면 채팅방에 사람이름이 주어진다.
ENTER 입력 이후 첫번째로 등장하는 이름의 로그는 인사를 뜻한다. 이는 결국 곰곰이로 인사한다를 뜻한다.
따라서 ENTER이후로 첫번째로 등장하는 이름의 수를 (곰곰이 등장~) 체크해서 출력하면 되는 문제이다.
중복을 없앤다 를 보자마자 Hash를 떠올려야 한다.
Hash 해시는 키와 데이터를 저장해주는 구조이므로 키는 1개여야 하기 때문에 중복을 허락하지 않는다.
이런 특성 때문에 암호, 메시지 인증 등에 자주 등장한다.
Hash Map은 키랑 데이터를 매핑하는 구조이므로 벨류가 필요없는 우리는 Hash Set을 활용해보자
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | import java.util.*; public class Main { // 25192번 인사성 밝은 곰곰이 public static void main(String[] args) throws Exception { // 닉네임을 Hash에 넣고, 중복되지 않으면 cnt ++ // Enter가 들어오면 Hash 초기화 후 반복. // 복잡하다면 처음껄 함수로 빼면 될듯듯 Scanner sc = new Scanner(System.in); HashSet<String> Chat = new HashSet<>(); int K = sc.nextInt(); int answer = 0; sc.nextLine(); // K 뒤 공백이 있었네.. //input for(int tc = 1; tc <= K; tc++) { String str = sc.nextLine(); if(str.equals("ENTER")) { // == 안쓰도록 주의. Chat.clear(); }else if(!Chat.contains(str)){ Chat.add(str); answer ++; } } // output System.out.println(answer); } } | cs |
스캐너가 익숙해서 인풋을 스캐너로 처리하는 바라에 공백을 고려하지 않아 틀렸었다.
K을 받아준 후 뒤 공백을 sc.nextLine(); 로 consume해주자.
HashSet에 없는 이름이라면 넣어주고, answer ++해준다. 있는지 판단은 Collections의 메서드 contains로 판단했다.
728x90
'알고리즘 > Backjoon - Java' 카테고리의 다른 글
백준 18429번 근손실 <S3> - 브루트 포스 (0) | 2023.10.30 |
---|---|
백준 26069번 붙임성 좋은 총총이 <S4> - Hash set (1) | 2023.10.27 |
백준 1010번 다리놓기 <S5> - DP, 조합 (1) | 2023.10.26 |
백준 1016 제곱 ㄴㄴ수 <G1> (1) | 2023.10.20 |
백준 1026번 보물 <S4> - 그리디 (0) | 2023.10.20 |
Comments