문제https://www.acmicpc.net/problem/14501풀이삼성 기출문제 중에 난이도가 낮은 편에 속하는 것 같다.N의 범위가 작기 때문에 완전탐색으로 풀었다.오늘 예약된 상담을 진행하느냐 안하느냐 두 가지로 나누어서 재귀호출을 진행하면 된다.계속 재귀함수의 조건이 헷갈려서 많이 틀렸다.curr_day 가 n일 때 끝내는 이유는 curr_day가 n-1이고 상담에 걸리는 기간이 1일이면 하루만에 끝내고 수익을 얻을 수 있기 때문이다.소스코드#include #include #include using namespace std; #define MAX_SIZE 16 int n; int ans; vector vec_tp(MAX_SIZE, make_pair(0, 0)); void Recur(int c..
문제https://www.acmicpc.net/problem/14891풀이2시간 정도만에 주어진 테스트케이스 4개를 맞춰서 좋아한 문제다. 이상하게 계속 틀렸습니다가 뜨는데 몇시간동안 들여봐도 어디서 잘못된건지 몰랐다.지금도 뭐가 다른지 모르겠다.문제에서 톱니바퀴를 회전하는 부분을 보고 톱니바퀴의 정보를 덱(Deque)으로 저장했다.문제에서 주의해야할 사항은 다음과 같다. 현재 위치한 톱니바퀴는 무조건 회전한다.인접한 톱니바퀴는 극이 다를 경우만 반대방향으로 회전한다.이 과정을 재귀함수로 구현했다.아래 소스코드를 보면 이해하기가 쉽다.처음에 소스코드를 짤 때는 Solution 함수에 들어갔을 때 현재 톱니바퀴의 정보를 curr_arr이라는 전역변수에 Copy 해주고 현재 톱니바퀴는 회전시킨 후에 인접한 ..
문제https://www.acmicpc.net/problem/14890풀이너무너무 오래 걸린 문제다. 구현 능력을 보는 문제 같은데 예외처리 해야될 게 너무 많아 힘들었다.행과 열 각각 재귀함수로 검사하는 함수를 만들었다.함수에는 이전 칸의 높이와 동일한 칸의 수를 넘겼다.이전 칸과 현재 간 사이의 관계는 세 가지로 정의할 수 있다. 이전 칸보다 현재 칸이 높은 경우이전 칸보다 현재 칸이 낮은 경우이전 칸과 현재 칸의 높이가 같은 경우 이전 칸과 현재 칸의 차를 구해서 관계를 구했으며 차가 2이상인 경우는 길로 만들 수 없기 때문에 바로 함수를 종료시켰다.현재 칸이 높은 경우고 차가 1인 경우는 경사로를 만들어야 되는데 이 때 현재까지 쌓인 cnt값을 이용해서 이전에 존재하는 동일한 칸 수가 L 이상인 ..