본문 바로가기
반응형

알고리즘/[PRO] 삼성 SW 역량 테스트 B형45

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 삼성 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.
메모리 풀 vs malloc 속도 비교 삼성 B형 전체 링크 삼성 C형 전체 링크 참고 - 메모리 풀 Memory Pool - 메모리 풀 vs malloc 속도 비교 - 링크드 리스트 Linked List - 링크드 리스트 Linked List Tail ver - 더블 링크드 리스트 Double Linked List - 더블 링크드 리스트 Double Linked List Tail ver 먼저 BOJ 1707 이분 그래프 문제(Linked List 만들기)에서 Make 함수를 malloc으로 바꿔보자. #include #include int K, V, E; typedef struct st { int node; struct st *next; }NODE; NODE HEAD[20200]; //NODE POOL[202000 * 2]; 메모리풀 관련 .. 2021. 2. 15.
BOJ 1707 : 이분 그래프 삼성 B형 전체 링크 www.acmicpc.net/problem/1707 그래프를 만들고 DFS나 BFS 탐색을 하면 된다. tc가 K개 있으므로, 초기화를 잘 해줘야 한다. 문제 풀이 방법은 node를 탐색하면서 색칠을 하면 된다. 색칠을 하다가, 이미 색칠이 된 곳을 검사해서 색깔이 다르면 "NO"가 된다. 3 - 2(빨강) = 1(검정) / 3 - 1(검정) = 2(빨강)이 되므로 if (!DFS(p->node, 3 - color)) return 0; 와 같은 방식으로 색칠하면 된다. 1 -1 을 하는 방법도 가능하다. DFS 풀이는 아래와 같다. #include int K, V, E; typedef struct st { int node; struct st *next; }NODE; NODE HEAD.. 2021. 2. 15.
메모리 풀 (Memory Pool) 삼성 B형 전체 링크 삼성 C형 전체 링크 참고 - 메모리 풀 Memory Pool - 메모리 풀 vs malloc 속도 비교 - 링크드 리스트 Linked List - 링크드 리스트 Linked List Tail ver - 더블 링크드 리스트 Double Linked List - 더블 링크드 리스트 Double Linked List Tail ver 삼성 B형에서는 c++ library 사용이 불가능하지만, 유일하게 malloc은 사용이 가능하다. swexpertacademy.com/main/sst/intro.do 하지만 이건 100% 함정이다. (100% 쓸모가 없다.) 아직도 가끔 외부 강사들이 malloc, free, new, delete를 멋지게(?) 사용하는 방법을 알려주는 것 같지만... 애초.. 2021. 2. 15.
BOJ 2606 : 바이러스 (Linked List) 삼성 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 삼성 SW A형 입문으로 대부분 풀어보게 되는 바이러스 문제를 Linked List로 풀어보자. N이 작기 때문에 보통 100 x 100 2차원 배열을 선언해서 그래프를 만들지만, B형 연습을 위해 Linked List를 만들어 보자. Linked List는 메모리 풀 방법으로 만들어야 한다. 먼저 예제 입.. 2021. 2. 15.
B형에 필요한 최적화 코드 (2) 삼성 B형 전체 링크 참고 - B형에 필요한 최적화 코드 (1) - B형에 필요한 최적화 코드 (2) - 함수의 매개변수와 배열의 register 속도 비교 - 삼성 B형 디버깅 Tip - 비주얼 스튜디오 output.txt 설정하기 - 삼성 SW 역량 시험 환경에서의 인라인 함수 - Visual Studio LNK1168: 쓰기용으로 열 수 없습니다 해결방법 B형에 필요한 최적화 코드 (1)은 필수 최적화이고 기억하기 쉽다. ++i 사용하기, register로 선언하기, 전역 변수는 복사해서 사용하기로 외울 필요도 없고, 마지막 점검 때, 코드만 조금 다듬으면 된다. (2)에서는 많이 사용하지는 않지만, 간단한 것을 모아보았다. 4) if/else vs switch/case 5) 비트 연산 : 나누기 .. 2021. 2. 15.
B형에 필요한 최적화 코드 (1) 삼성 B형 전체 링크 참고 - B형에 필요한 최적화 코드 (1) - B형에 필요한 최적화 코드 (2) - 함수의 매개변수와 배열의 register 속도 비교 - 삼성 B형 디버깅 Tip - 비주얼 스튜디오 output.txt 설정하기 - 삼성 SW 역량 시험 환경에서의 인라인 함수 - Visual Studio LNK1168: 쓰기용으로 열 수 없습니다 해결방법 1) ++i (전위 증가) vs i++ (후위 증가) 비교. 2) register 변수를 사용하자. 3) 전역 변수(global) 접근을 최소화 하자. 1) ++i (전위 증가) vs i++ (후위 증가) 비교. 전위 증가는 값을 먼저 증가 시키고 return한다. 후위 증가는 원래 값을 먼저 받고 나중에 증가한다. 하지만 후위 증가의 경우는 임시.. 2021. 2. 15.
삼성 SW 역량 테스트 B형 Reference 코드 삼성 B형 전체 링크 swexpertacademy.com/main/main.do 상단의 LEARN -> Visual Reference Code에 참조 코드가 있다. Data Structure, Algorithm에 대한 reference code가 실제 시험에도 제공된다. (문제 왼쪽 상단에 Reference 탭 제공) 필요한 코드를 정리해보면. Data Structure 1) Stack - 배열로 간단히 만들 수 있다. 참조 코드처럼 만들면 느리다. (스택 예시 참고) 2) Queue - 배열로 간단히 만들 수 있다. 참조 코드처럼 만들면 느리다. (큐 예시 참고) 3) Priority Queue - B형 필수, 못 외우겠다면 참조 코드도 나쁘진 않지만, 자기만의 코드를 만들도록 하자. - 특히 참조 코.. 2021. 2. 15.
반응형