본문 바로가기
반응형

알고리즘312

삼성 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.
메모리 풀 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) SW 역량테스트 합격하기 A형 강의 오픈!! (인프런 바로가기) 삼성 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) SW 역량테스트 합격하기 A형 강의 오픈!! (인프런 바로가기) 삼성 B형 전체 링크 참고- B형에 필요한 최적화 코드 (1)- B형에 필요한 최적화 코드 (2)- 함수의 매개변수와 배열의 register 속도 비교- 삼성 B형 디버깅 Tip- 비주얼 스튜디오 output.txt 설정하기- 삼성 SW 역량 시험 환경에서의 인라인 함수- Visual Studio LNK1168: 쓰기용으로 열 수 없습니다 해결방법 B형에 필요한 최적화 코드 (1)은 필수 최적화이고 기억하기 쉽다.++i 사용하기, register로 선언하기, 전역 변수는 복사해서 사용하기로 외울 필요도 없고,마지막 점검 때, 코드만 조금 다듬으면 된다. (2)에서는 많이 사용하지는 않지만, 간단한 것을 모아보았다. 4) if/else vs .. 2021. 2. 15.
BOJ 14502 : 연구소 (삼성 SW TEST A형) SW 역량테스트 합격하기 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(in.. 2021. 2. 15.
BOJ 14501 : 퇴사 (삼성 SW TEST A형) SW 역량테스트 합격하기 A형 강의 오픈!! (인프런 바로가기) 삼성 A형 전체 링크 www.acmicpc.net/workbook/view/1152 (A형 문제집) www.acmicpc.net/problem/14501  모든 경우를 다 해봐야 최대 이익을 알 수 있다.하지만 특정 일에 상담을 한다면, 해당 일 + T[i]일 부터 상담이 가능하다는 조건을 지켜야 한다. 모든 경우는 아래와 같다.1일에 상담 -> 4일, 5일, 6일, 7일 상담 가능.2일에 상담 -> 7일 상담 가능....7일에 상담 -> 불가능. 따라서 DFS를 총 N번 실행한다. (N번째 일을 최초로 시작하는 상담)/* N일부터 상담 시작, 첫 보수는 0원 부터. */for (int i = 1; i  input은 날짜가 1일부터 시작하므.. 2021. 2. 15.
BOJ 14501, 15486 : 퇴사, 퇴사 2 알고리즘 문제 전체 링크 www.acmicpc.net/problem/14501 www.acmicpc.net/problem/15486 퇴사 1의 경우는 완전 탐색으로 풀 수 있지만, 퇴사 2는 N이 매우 크므로, 다이나믹 프로그래밍, 메모이제이션(memoization)으로 풀어야 한다. DP[i] = i일 전까지의 최대 이익 이라고 정의를 하자. i일에 일을 수행하지 않으면, DP[i + 1] = DP[i]와 기존 memoization의 값 중 큰 값이 된다. i일에 일을 수행한다면, i일 전까지의 최대 이익인 DP[i]와 i일에 받을 보수 P[i]를 더한 값 vs 기존 memoization의 값 중 큰 값. 즉, DP[i + T[i]] = DP[i] + P[i] 와 DP[i + T[i]] 중 큰 값을 선.. 2021. 2. 15.
반응형