본문 바로가기

SWEA/삼성SW역량테스트 C++

(19)
[모의 SW 역량테스트] 차량 정비소 문제 https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV6c6bgaIuoDFAXy SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 풀이 * 시간 0부터 들어온 고객을 접수 창구에 배정한다. 이 때, 접수 창구가 꽉 차서 배정되지 못한 고객은 대기 배열에 넣는다. (waitA) * USER 완료하면 정비 창구 대기열에 넣는다. 3) inputWaitingB() : 정비 창구 대기열에 잇는 사람들을 정비 창구에 넣는다. *** 정비 창구가 꽉 차서 들어가지 못한 사람들은 wait를 1씩 증가시켜준다. (wait가 클 수록 더..
[모의 SW 역량테스트] 수영장 문제 https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV5PpFQaAQMDFAUq SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 풀이 * 완탐으로 해결 가능 => 월을 기준으로 모든 조합을 다 구한다. * 먼저 1년은 모든 월을 커버할 수 있기 때문에 최소값으로 1년 요금으로 정한다. * 1일과 1달은 '한' 달을 기준으로 보기 때문에 idx+1 로 월을 하나만 늘려주고, 3달은 idx+3으로 3달 후를 보도록 한다. 1일은 그 달에 수영장을 이용한 횟수만큼 요금을 더해주며 최소값을 구한다. #include #inclu..
[모의 SW 역량테스트] 벌꿀채취 문제 https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV5V4A46AdIDFAWu 불러오는 중입니다... 풀이 * 완전 탐색 * 각 row에서 m만큼 벌통들을 보면서 최대 C이하가 되는 최적의 조합을 구해야 한다. * cost[][] 에는 현재 위치에서 m만큼 봤을 때 채취할 수 있는 벌꿀의 최대 수익을 저장한다. * 전체 맵을 순회하면서 서로 겹치지 않는 두 지점의 최대 수익의 합을 구한다. #include #include #include using namespace std; int n, m, c; int map[11][11]; int cost[11][11]; bool chk[6]; int value = 0; t..
[SW Test 샘플문제] 프로세서 연결하기 * dfs 조합을 이용해서 최대한 많은 core들을 연결했을 때 최소 전선의 길이를 구한다. * 맵의 사이드에 있는 코어들은 이미 연결되어있기 때문에 cores에는 그 외의 코어들을 넣는다. * dfs(idx, cnt)에서는 코어들을 조합을 확인하면서 백트래킹한다. * check(x, y, d) : x, y 좌표에 있는 코어가 d방향으로 연결될 수 있으면 T, 아니면 F doConnect(x, y, d) : check() 가 T라면 연결한다. (chk 배열에 방문표시) doDisConnect(x, y, d) : 원상 복귀 (백트래킹) #include #include #include #define INF 987654321 using namespace std; int n; int map[13][13]; bo..
[SWEA] 보물상자 비밀번호 [문제] https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWXRUN9KfZ8DFAUo SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! www.swexpertacademy.com [풀이] 1.convertToDe() => (문자열 사이즈 /4)를 한 길이의 문자열 4개를 10진수로 바꾸어서 int 배열에 저장한다. (16진수임을 명시 해야 함.) 백터에 정수들을 저장 2. rotate() => 입력받은 문자열의 가장 마지막 문자열을 맨 앞으로 가져온다. (한 문자씩 시계방향으로 움직이기 때문에 각 회전마다 변경되는 건 맨 뒤의 문자열 뿐이다.) 3. 백터를 ..
[SWEA] 벽돌깨기 [문제] https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWXRQm6qfL0DFAUo SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com [풀이] 1) 시뮬레이션 문제 (완탐 필요) 2) 구슬은 총 n번 떨어뜨릴 수 있기 때문에 DFS cnt == n이면 종료하고 지금 남아있는 벽돌의 개수를 센다. 3) 이 문제에서 중요한 점은 Map을 유지하는 데 있다. 맵을 전역변수로 빼지 않고 계속 변수로 넘겨주면서 보존을 해야한다. 4) 구슬을 떨어뜨리는 dfs는 재귀호출을 하면서 가장 위의 벽돌에 구슬을 떨어뜨린다. 만약 지금 제일..
[SWEA] 원자소멸시뮬레이션 [문제] https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWXRFInKex8DFAUo SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com [풀이] 1) 큐를 사용하면 시간 초과가 발생한다. 2) 원자가 하나도 없을 때와 하나만 존재할 때는 ans = 0 이다. 왜냐하면 어떤 다른 원자와도 부딪힐 수 없기 때문이다. 3) 원자는 서로 같은 좌표를 향해 움직일 때 에너지를 방출할 수 있다. 좌표의 범위는 (-1000 t; for (int tc = 1; tc > n; for (int i = 0; i > x >> y >> d >> ..
[SWEA] 점심식사시간 [문제] https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV5-BEE6AK0DFAVl SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com [풀이] 1) 조합 + 시뮬레이션 2) 문제를 읽고 단번에 파악할 수 없는 점은 사람들이 항상 가장 가까운 계단으로 가는 것은 아니라는 것이다. (최소 시간이 되는 계단이 꼭 가까이에 있는 계단이 아니기 때문에) 3) 그래서 모든 경우의 수를 구해줘야 한다. 다행인 건, 계단이 2개뿐이라는 것이다. (visited로 해결 가능) - people 백터에 사람들의 위치를 넣어주고 - stair..