본문 바로가기

분류 전체보기98

2383. [모의 SW 역량테스트] 점심 식사시간 SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 링크 : 2383. [모의 SW 역량테스트] 점심 식사시간 (로그인 필요) N*N크기 맵에 2개의 계단, 사람들이 주어진다. 계단은 길이가 존재하고, 계단에는 최대 3명이 올라갈 수 있다. 이러 계단을 이용해서 모든 사람들이 내려갔을 때 최소시간을 구하면 된다. 여러 풀이 방법이 있겠지만, 직관적으로 생각하기 좋은 방법은 "조합 + 시뮬레이션"일 것 같다. 조합을 통해 사람들을 2개의 그룹으로 나눠 계단을 내려가는 시뮬레이션을 진행하였다. 여기서 주의 할 점은 1. 계단은 최대 3명이 이용할 수 있다. 2. 계단에 도착 후 다음 시간(초)에 계단에 진입한다. 3... 2020. 2. 12.
1770. [SW Test 샘플문제] 블록 부품 맞추기 SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 링크 : 1770. [SW Test 샘플문제] 블록부품 맞추기 main을 보면 블록의 높이는 1~8인 것을 알 수 있다. int max_ =1+ (rand() % 6); module[c][y][x] = max_ + (rand() % 3); 블록 모양을 배열이 아닌 다른 방법으로 저장해서 빠르게 연산할 방법으로 16자리 10진수 각각의 자리에 높이를 저장하였다. (친구가 도움을 준 아이디어) 예를 들어 위 모양의 블록을 long long shape = 3222122313132231; 이런식으로 저장을 했다. 이런식으로 원래 모양을 저장하고 블록을 맞춰 끼우기 위해선.. 2019. 9. 26.
[1922번] 네트워크 연결 1922번: 네트워크 연결 www.acmicpc.net Union Find를 이용해 풀 수 있는 쉬운 문제 입력 받은 경로들의 비용을 기준으로 정렬해서 차례대로 Union을 진행한다. Union할 수 있을 때 비용들을 누적해서 최종적으로 출력하면 된다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 /*1922번 네트워크 */ #include #include #define SIZE 1001 using namespace std; struct info { int s, e, value; }V[100000]; bo.. 2019. 8. 15.
Union Find(합집합 찾기) 서로소 집합 자료구조 중 하나로 무향 그래프의 연결된 요소들을 추적할 수 있다.(by 위키백과)위키에 있는 의사코드를 보면 상당히 간단하게 구현이 가능하다. function MakeSet(x) x.parent := x function Find(x) if x.parent == x return x else return Find(x.parent) function Union(x, y) xRoot := Find(x) yRoot := Find(y) xRoot.parent := yRoot위 모양은 단순한 형태로 구현한 것이다.위 코드에서 문제점이 있는데 사향 이진 트리와 같은 모양으로 구성되면 매우 비효율 적이다. 그렇기 때문에 Find(x)함수에서 약간의 처리를 해주면 된다. function Find(x) if x.. 2019. 8. 15.