본문 바로가기

반응형

2018/12/01

(4)
[삼성 기출 문제] 백준 14502 연구소 문제 링크 클릭시 이동합니다. 어떻게 풀까? 문제를 크게 2 부분으로 나눠야 합니다. 1. 벽을 3개 세우는 부분2. 바이러스를 퍼뜨리는 부분 1번은 dfs를 이용해서 조합을 이용해서 해당 좌표에 벽을 세운다 or 안세운다 의 동작을 통해서 모든 구역에 벽을 3개씩 세워보는 방법을 이용합니다. 그리고 벽을 3개 세웠을 때, bfs를 이용해서 2번을 동작해서, 바이러스의 개수를 세서 이 최댓값을 출력하면 풀이는 완료됩니다! 2차원에서 조합을 이용하는 방법을 알아봅시다! n = 3이라고 하겠습니다. 시작은 (0,0) 입니다.우선, (0,0)에 벽을 세울지 안 세울지 정합니다. 우선 세운다고 가정하겠습니다. 그럼, 열의 크기를 1 늘려준 뒤에 해당 위치에서 다시 위의 과정을 반복합니다.이번에는 안세운다고 하겠..
[삼성 기출 문제] 백준 14501 퇴사 문제 링크 클릭시 이동합니다. 어떻게 풀까? 현재가 X일이 지난 상태이고 일을 할 수 있는 상태라고 가정해봅시다!그럼, X일 에서의 의뢰를 수행할 수 있겠죠! 이 일을 할 때 벌어들인 금액이 가장 최댓값이 되기 위해서는 어떻게 해야할까요? 답은 간단합니다! X일 전까지 일했던 금액이 가장 많게 하면 되죠! 현재가 X일이라고 했을 때, X-1+T[X]일의 금액 값과, X-1일까지 마친 금액 + P[X] 값 중 큰 값을 X-1 + T[X]일의 벌이로 기록하는 것입니다!이렇게 하면, n일에 저장된 값을 바로 출력하면 되죠! 이를 위해, 간단한 DP점화식을 만들 수 있죠. 그리고, 인덱스 오류를 피하기 위해서 X +T[X]가 n을 넘어갈 때에는 무시하도록 합시다! 코드 12345678910111213141516..
[삼성 기출 문제] 백준 14500 테트로미노 문제 링크 클릭시 이동합니다. 어떻게 풀까? 블럭들을 보시면 최대 4x4 영역 안에 들어온다는 것을 알 수 있습니다.간단하게, 4x4 영역 안에 블럭에 들어오는 영역이면 1, 아니면 0으로 표시하면,모든 (i,j) 영역에 대해서 위에서 저장한 값을 곱해서 더하면 블럭에 대한 더하기 값을 알 수 있습니다. 이 중 최댓값을 반환하면 되겠죠! 다만 위처럼 배열 인덱스 초과가 나지 않도록 하기위해, 오른쪽과 아래에 0의 값을 가지도록 영역을 더 넓혀서 계산합시다! 테트로미노 사전을 만드는 것이 문제 푸는것 보다 오래 걸리는 문제입니다. 코드 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525..
[삼성 기출 문제] 백준 14499 주사위 굴리기 문제 링크 어떻게 풀까? 시뮬레이션 문제입니다! 문제의 순서를 정확히 파악해서 문제가 요구하는 데로 구현하면 종료됩니다! 특히, 주사위가 돌아갈 때마다 주사위의 면이 어떻게 변하는지, 맵은 어떻게 변하는지를 잘 조절하시면 됩니다! 정육면체가 위, 아래, 왼쪽, 오른쪽으로 이동할때마다 면이 어떻게 변하는지를 switch 문으로 구분해 줍니다. 위나 아래로 굴러갈때에는 아래 그림 처럼 4개의 면을 순서대로 이동하면 되고, 오른쪽이나 왼쪽으로 굴러갈때에는 아래 그림처럼 4개의 면을 순서대로 이동하면 됩니다! 이렇게 회전한 뒤에 맵의 면이 0일 경우와 아닐 경우를 구분해서 주사위 면의 바닥과 맵의 값을 변경해 주시면 됩니다!그리고 주사위의 윗면에 적힌 수를 출력하면 되죠! 다만, 맵의 경계 밖이라면 함수에서 리..

반응형