본문 바로가기
반응형

삼성 B형70

B형 필수 : 우선순위 큐 Priority Queue A형 필수 알고리즘을 체계적으로 배우고 싶다면? (인프런 바로가기) 삼성 B형 전체 링크 참고 - 우선순위 큐 Priority Queue- 우선순위 큐 응용 (1) - 두 개의 heap을 이용하여 중앙값 찾기- 우선순위 큐 응용 (2) - 최댓값, 최솟값 동시에 관리하기- 우선순위 큐 임의 원소 삭제- 우선순위 큐 임의 원소 삭제 최적화- 우선순위 큐 임의 원소 갱신, 변경 B형에서 Merge Sort는 마지막에 이분 탐색을 위해 필요한 경우가 많다. 그리고 '무언가'를 push해주고, 그 중 가장 우선순위가 높은 '무언가'를 pop하면서,순서를 유지하고 싶을 때는 우선순위 큐를 이용해야된다. 요즘 B형에서는 HashTable + 우선순위 큐 모두 사용해야하는 경우가 많으므로, 우선순위 큐에 대해서 익혀.. 2021. 2. 19.
BOJ 7785 : 회사에 있는 사람 (Hash Table + Merge Sort) 삼성 B형 전체 링크 www.acmicpc.net/problem/7785 이름을 입력받으면, 아래의 DB 배열에 저장하고 in = 1로 두자. typedef struct st { char name[6]; int in; }DB; DB에 저장하고 이름을 hashing하여 HashTable에 저장하는데, 이때, DB를 포인터로 가르키도록 하자. typedef struct st2 { DB *db; struct st2 *next; }HASH; 즉, Hash에서 db를 보고 있으므로, 포인터로 접근하여 in = 0으로 바꿀 수 있게 된다. DB 자체는 배열로 유지하되, in을 Hash를 통해 포인터로 값을 바꾼다. input = 'enter'면 Hash 저장 및 in = 1, input = 'leave'면 Hash.. 2021. 2. 18.
삼성 B형 샘플 문제 : 숫자야구게임 (+ Linked List 삭제) SW 역량테스트 합격하기 A형 강의 오픈!! (인프런 바로가기) 삼성 B형 전체 링크 swexpertacademy.com/main/sst/intro.do SW Expert Academy에서 B형 샘플 문제 숫자야구게임을 풀어보자.  B형에서 가끔 출제 되는, 시간보다 함수 호출 횟수를 줄여야 하는 쿼리형 문제이다.따라서 register나 ++i 같은 최적화를 신경 쓸 필요가 없다.먼저, 숫자 야구 게임에 대해서 간단히 알아보자. 정답이 1357이고, 9375라고 query를 던지면 result = { strike = 1, ball = 2 }가 된다.위치도 같고, 숫자도 같은 3 → strike 1, 위치는 다르지만, 숫자는 같은 5, 7 → ball = 2 가 된다. guess 배열에 [1, 3, 5, .. 2021. 2. 17.
BOJ 1764 : 듣보잡 (Hash Table + Merge Sort) 삼성 B형 전체 링크 www.acmicpc.net/problem/1764 듣도 못한 사람의 수 N명, 보도 못한 사람의 수 M명 중 두 명단에 모두 포함되는 사람의 수를 찾고, 사전순으로 출력해야 한다. 두 명단에 포함 → Hash Table 사전순 출력 → Merge Sort 꼭 이렇게 풀 필요는 없지만, B형 연습을 위해 Hash Table + Merge Sort로 풀어보자. B형에서는 string 라이브러리를 사용할 수 없으므로, strcmp와 strcpy는 직접 만들어야 된다. (가끔 코드로 제공) void mystrcpy(char *a, char *b) { while (*a++ = *b++); } int mystrcmp(const char *a, const char *b) { while (*a .. 2021. 2. 17.
B형 필수 정렬 : 머지 소트 Merge Sort 삼성 B형 전체 링크 B형에서는 Quick 정렬을 Reference 코드로 제공한다. 하지만, Quick은 최악의 경우 O(N2)이므로, 어떤 상황에서도 O(NlogN)인 Merge Sort를 익혀두자. Merge Sort는 반으로 나누어서, 왼쪽을 정렬하고, 오른쪽을 정렬한 후, 합치는 방법으로 정렬을 한다. 왼쪽을 정렬할 때는, 다시 반으로 나누어서, 왼쪽, 오른쪽 정렬하고 합친다. 오른쪽도 마찬가지로 ... 즉, 재귀 함수를 이용해서 정렬하게 된다. start >= end면 더 이상 정렬할 수 없으므로 종료 조건으로 사용한다. void sort(int start, int end) { int mid; if (start >= end) return; mid = (start + end) >> 1; /* 절.. 2021. 2. 16.
해시 테이블 성능 비교 및 소수 찾기 (BOJ 1620) 삼성 B형 전체 링크 참고 - 해시 테이블 Hash Table - 해시 테이블 추가, 삭제, 수정, 검색 - 해시 응용 - 2차원 배열 탐색 - 해시 응용 - Rush Hour Puzzle (2차원 배열 탐색 응용) - 해시 테이블 성능 비교 BOJ 1620의 MAX_TABLE을 바꿔가면서 성능을 비교해보자. BOJ 1620의 N = 100,000이다. 순서대로 MAX_TABLE = 100 (작은 값이고 소수가 아님) MAX_TABLE = 107 (작은 값이고 소수) MAX_TABLE = 100,000 (N과 비슷한 값이지만 소수가 아님) MAX_TABLE = 100,003 (N과 비슷한 값이지만 소수) MAX_TABLE = 200,000 (N의 2배, 소수가 아님) MAX_TABLE = 200,009 .. 2021. 2. 16.
BOJ 1620 : 나는야 포켓몬 마스터 이다솜 (Hash Table) 삼성 B형 전체 링크 www.acmicpc.net/problem/1620 참고 - 해시 테이블 Hash Table - 해시 테이블 추가, 삭제, 수정, 검색 - 해시 응용 - 2차원 배열 탐색 - 해시 응용 - Rush Hour Puzzle (2차원 배열 탐색 응용) - 해시 테이블 성능 비교 BOJ 1620은 실제 삼성 B형에서도 자주 나오는 문자열 해싱과 비슷해서 Hash Table 연습 문제로 풀이를 만들어 보았다. 실제 B형에서 제공하는 hashing 함수를 이용해서 문제를 풀어보자. unsigned long hash(const char *str) { unsigned long hash = 5381; int c; while (c = *str++) { hash = (((hash 숫자 */ POKETM.. 2021. 2. 16.
BOJ 2606 : 바이러스 (Linked List Tail ver) 삼성 B형 전체 링크 삼성 C형 전체 링크 www.acmicpc.net/problem/2606 참고 - 메모리 풀 Memory Pool - 메모리 풀 vs malloc 속도 비교 - 링크드 리스트 Linked List - 링크드 리스트 Linked List Tail ver - 더블 링크드 리스트 Double Linked List - 더블 링크드 리스트 Double Linked List Tail ver Linked List는 HEAD만으로도 충분하지만, 가~~~끔 들어온 순서를 고려해야하는 경우가 있다. 이 때는 TAIL을 써서 끝 node의 주소를 기억해두면 된다. Make 함수를 보자. void Make(int p, int c) { NODE *nd = &POOL[pcnt++]; nd->node = c;.. 2021. 2. 16.
삼성 B형 디버깅 Tip SW 역량테스트 합격하기 A형 강의 오픈!! (인프런 바로가기) 삼성 B형 전체 링크 참고- B형에 필요한 최적화 코드 (1)- B형에 필요한 최적화 코드 (2)- 함수의 매개변수와 배열의 register 속도 비교- 삼성 B형 디버깅 Tip- 비주얼 스튜디오 output.txt 설정하기- 삼성 SW 역량 시험 환경에서의 인라인 함수- Visual Studio LNK1168: 쓰기용으로 열 수 없습니다 해결방법 1) tc N번까지 통과하는데, N+1번 부터 실패하는 경우. tc N번까지 지우고 N+1번부터 통과하는지 확인해본다.N+1번 부터 통과한다면 거의 100% 초기화를 제대로 안해준 경우다.사용하는 배열이나 index를 모두 init에서 제대로 초기화 하는지 확인해보자.2) 비주얼 스튜디오 디버거를.. 2021. 2. 16.
반응형