해시4 [백준 7785/javascript] 회사에 있는 사람 조건의 연산이 많으므로 최대한 간단하게 만들어서 비교해야 하는문제이다 enter leave 의 체크도 연산 낭비이니 객체로 카운트하여 변하였다면 나간것으로 보면 된다 비교시에도 0과 비교하는 것이 빠르므로 0인지를 확인하도록 한다 https://www.acmicpc.net/problem/7785 7785번: 회사에 있는 사람 첫째 줄에 로그에 기록된 출입 기록의 수 n이 주어진다. (2 ≤ n ≤ 106) 다음 n개의 줄에는 출입 기록이 순서대로 주어지며, 각 사람의 이름이 주어지고 "enter"나 "leave"가 주어진다. "enter"인 경우는 www.acmicpc.net let input = []; const readline = require("readline").createInterface({ i.. 2022. 10. 28. [백준 10815/c++] 숫자 카드 맵을 사용하여 해시 카운트를 사용, 큰 수 이므로 숫자가 아닌 문자열의 형태로 넣어 비교하는 문제였다 https://www.acmicpc.net/problem/10815 10815번: 숫자 카드 첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드에 적혀있는 수는 -10,000,000보다 크거나 같고, 10, www.acmicpc.net #include using namespace std; int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); int n, m; string s; unordered_map mapi; c.. 2022. 7. 15. [프로그래머스 2 / c++] 전화번호 목록 - 해시 해쉬를 이용해서 풀라는 문제 같은데, 정렬을 사용 후 앞뒤만 비교하는 것이 더 효율적인 함정 문제이다 하지만 배우는 입장에서는 두 경우 모두 배울점이 많았다 정렬은 sort 후 다음 요소에 이전 요소를 find하여 0인지로 접두어를 찾는 아이디어!(없으면 ::npos가 나올 것이다) 해시는 아직 사용 경험도 부족한 만큼 원리이해와 key값이 없을때 key가 map에 추가되고 0의 value를 갖는점, substr 을 루프에 활용하는 아이디어 등을 배울 수 있었다 #include using namespace std; bool solution(vector phone_book) { // 1. 정렬 후, 뒤의 숫자에서 앞의 숫자 find 하기 // 오름차순 정렬 후, 뒤의 숫자가 앞의 숫자를 포함하는지 확인. .. 2022. 6. 21. [프로그래머스 1 / c++] 완주하지 못한 선수 해쉬 문제로 유명한 문제이다 참가자와 완주자 명단을 비교하여 완주하지 못한 선수 이름을 찾는 문제이다 쉽게 이름 별로 인원 수를 카운트 하기위해서 unordered_map 을 사용하여 map을 만들고, 범위지정 for 문으로 참가자 명단을 돌며 map에 이름이 없으면 이름을 넣고 1로 초기화 해주기 위해 맵을 돌며 이름을 find 하고 이름이 없으면 반복자가 end()위치와 같으므로 조건을 지정 후 map(이름, 1) 해준다 for문 수행 중 맵에 이름이 있다면 그 이름의 벨류를 1 올려주어 중복을 알 수 있다(하지만 이 문제는 안쓰인다) 다시 범위지정으로 완주자를 돌며 완주자 이름당 벨류를 1씩 빼준다 for문으로 맵에서 혹은 참가자에서(둘 다 이름 목록이 같으므로 둘 중 하나를 골라 돌자) 이름을 다.. 2022. 6. 19. 이전 1 다음