본문 바로가기
반응형

전체 글1054

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.
Visual Studio 실행 시간 확인 방법 깃허브 데스크탑으로 프로젝트 관리하기 강의 오픈!! (인프런 바로가기) 참고- chrono를 이용하여 Visual Studio 실행 시간 microseconds로 확인하기 time.h를 이용하면 자신의 코드 제출 시간을 알 수 있다.하지만 삼성 SW 시험에서는 컴파일러 옵션이 다르기 때문에 Visual Studio의 실행 시간을 그대로 믿어서는 안된다. #include #include int main(){ int TESTCASE = 1000; int TIME = 0; /* Timer on */ clock_t start = clock(); /* 실행 코드 */ for (int tc = 1; tc  위의 코드가 1초 정도 소요됨을 알 수 있다. 2021. 2. 15.
BOJ 14502 : 연구소 (삼성 SW TEST A형) 삼성 A형 전체 링크 www.acmicpc.net/workbook/view/1152 (A형 문제집) www.acmicpc.net/problem/14502  MAP을 입력받을 때, (0, 0)이 아닌 (1, 1)을 기준으로 잡는다.(0, 0) ~ (N+1, N+1)을 모두 1로 만들고 (1, 1)부터 입력을 받으면, 경계 조건을 신경쓰지 않고, 벽인지 아닌지만 체크하면 된다.void input(){ scanf("%d %d", &N, &M); for (int r = 0; r  이제 MAP을 입력받았으니, 벽을 3개 만들자.벽을 만들 때, 3중 for문을 이용할 수도 있지만, DFS 연습으로, 3단계를 걸쳐 벽을 만들어 보자.void DFS(int L, int sr){ int tmp; if (L > 3) /*.. 2021. 2. 15.
반응형