알고리즘/삼성 SW 역량 테스트(4)
-
테트로미노
문제폴리오미노란 크기가 1×1인 정사각형을 여러 개 이어서 붙인 도형이며, 다음과 같은 조건을 만족해야 한다.정사각형은 서로 겹치면 안 된다.도형은 모두 연결되어 있어야 한다.정사각형의 변끼리 연결되어 있어야 한다. 즉, 꼭짓점과 꼭짓점만 맞닿아 있으면 안 된다.정사각형 4개를 이어 붙인 폴리오미노는 테트로미노라고 하며, 다음과 같은 5가지가 있다.아름이는 크기가 N×M인 종이 위에 테트로미노 하나를 놓으려고 한다. 종이는 1×1 크기의 칸으로 나누어져 있으며, 각각의 칸에는 정수가 하나 쓰여 있다.테트로미노 하나를 적절히 놓아서 테트로미노가 놓인 칸에 쓰여 있는 수들의 합을 최대로 하는 프로그램을 작성하시오.테트로미노는 반드시 한 정사각형이 정확히 하나의 칸을 포함하도록 놓아야 하며, 회전이나 대칭을 ..
2024.05.31 -
주사위 굴리기
https://www.acmicpc.net/problem/14499소요 시간 : 1시간 20분실행 결과 : 실패 (입력값을 받아오는데 실수, 논리는 맞음)"가장 처음에 주사위에는 모든 면에 0이 적혀져 있다."라는 조건을 확인하지 못해서 시간이 많이 뺏겼다. 각 면에 번호를 붙혀서 면들을 구분해놓은 것이 전개도니까 동,서,남,북으로 주사위를 굴렸을 때 전개도의 상태가 어떻게 변경되는지 적어보았다.윗면, 밑면, 오른면, 왼면, 앞면, 뒷면이 전개도 상에서 1, 3, 4, 2, 5, 6일 때, 동서남북으로 회전한 상태는 다음과 같다. 위밑오왼앞뒤동431625서346125남523416북253461 1. 굴리는 방향에 따라 현재 위치에서 이동할 다음 위치를 구한다. - 만약 이동할 다음 위치가 범위에서 벗어난..
2024.05.29 -
톱니바퀴
https://www.acmicpc.net/problem/14891소요 시간 : 1시간 20분실행 결과 : 성공톱니바퀴의 회전여부가 중요하다.회전을 했다면 회전한 톱니바퀴 양 쪽 톱니바퀴와 맞닿은 부분이 같은 극인지 다른 극인지 판단한다.다른 극이라면 또 톱니바퀴를 회전해야한다. 즉, 재귀적인 방법을 생각할 수 있다. 그런데 회전을 했다면 해당 바퀴는 회전을 했다고 체크해야한다. 그러지 않으면 재귀에서 빠져나올 수 없다.바퀴 정보를 state라고 가정할 때, solve (회전시킬 바퀴, 방향): if(check[회전시킬 바퀴]) return // 해당 바퀴가 이미 회전한다고 체크되었다면 return check[회전시킬 바퀴] = 1 // 바퀴가 인덱스 범위에 벗어나지 않도록 해야한다. if(회..
2024.05.29 -
퇴사
문제상담원으로 일하고 있는 백준이는 퇴사를 하려고 한다.오늘부터 N+1일째 되는 날 퇴사를 하기 위해서, 남은 N일 동안 최대한 많은 상담을 하려고 한다.백준이는 비서에게 최대한 많은 상담을 잡으라고 부탁을 했고, 비서는 하루에 하나씩 서로 다른 사람의 상담을 잡아놓았다.각각의 상담은 상담을 완료하는데 걸리는 기간 Ti와 상담을 했을 때 받을 수 있는 금액 Pi로 이루어져 있다.N = 7인 경우에 다음과 같은 상담 일정표를 보자.1일에 잡혀있는 상담은 총 3일이 걸리며, 상담했을 때 받을 수 있는 금액은 10이다. 5일에 잡혀있는 상담은 총 2일이 걸리며, 받을 수 있는 금액은 15이다.상담을 하는데 필요한 기간은 1일보다 클 수 있기 때문에, 모든 상담을 할 수는 없다. 예를 들어서 1일에 상담을 하게..
2024.05.27