혼종 꼬지마루
이 문제 역시 삼성기출로 나왔다는 문제 문제에서 주어진 테트로미노를 검사하고, 그 영역안에 값을 모두 더했을 때 최대값을 구하는 문제 인접한 4개를 고르는 것이기 때문에 dfs로 4개를 골라 검사해주면 끝 하지만, 주어진 테트로미노 중 ㅏ모양과 이를 회전시킨 ㅗ ㅓ ㅜ 까지 총 4개는 따로 검사해야 한다 1. dfs로 4개를 골라 최대값을 찾는다 2. 그 지점에서 ㅏ ㅗ ㅓ ㅜ 4개의 모양을 검사하여 최대값을 찾는다 1번 같은 경우는 사실 너무 정형화된 형태라 세부 코딩만 다르고 왠만하면 모두 똑같이 풀 수 있다 하지만 2번같은 경우는 사람마다 더 효율적인 코딩이 되도록 짤수도 있고, 그냥 나처럼 방향 모두 구하고 범위검사하고 해도 시간은 충분하다 1234567891011121314151617181920..
삼성 기출문제 퇴사랑 같은 문제지만, 범위가 넓어서 DP로 푸는게 맞음 그냥 퇴사문제는 범위가 좁아서 DFS로도 풀 수 있지만 이 문제는 범위가 1500000이나 되기 때문에 DFS로는 절대 풀 수 없다 DP를 처음 공부하고 퇴사, 퇴사2를 풀면서 마스터했다 1. 일을 하고 다음 날 돈을 받는 걸로 생각한다 ex. 3일 일하고 4일째 돈을 받는다. 따라서 N일까지 일을 한다고 가정할 때, N+1일날 돈을 받는다. 2. 오늘 부터 일을 할 때, map[i].day 이후, 즉 i + map[i].day 가 >N + 1일때는 일을 할 수 없으므로 continue; 3. i+map[i].day 되는 날 최대 값을 dp에 저장하고, 갱신하며 N + 1일까지 일을 한다. 123456789101112131415161..
최근 다녀온 삼성전자 DS SW직군 채용상담회에서 TREE와 Linked List문제 트랜트로 바뀌고 있다해서 많이 풀어보는 중 이 문제도 tree문제를 찾아서 풀던 중 기본부터 다지기 위해 시작하는 문제 일단 전위 순회로 입력되는 것을 EOF까지 입력받고, 이 데이터를 바탕으로 Tree를 역추적 그리고 후위 순회로 출력하며 동적할당된 노드를 삭제해주기만 하면 끝 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273#include #include #include using namespace std; typedef ..