GreatAlgorithm-Study / AlgorithmStudy

5 stars 5 forks source link

[3주차_금요일] 나무 타이쿤 #28

Closed Jewan1120 closed 1 month ago

Jewan1120 commented 1 month ago
KodaHye commented 1 month ago

🤔 시간복잡도 고려사항

n, m, d를 고려했을 때, 문제에 주어진대로 구현해도 시간이 충분


💡 풀이 아이디어

처음에는 영양제가 있는 곳을 ArrayList<Point>로 저장해서 풀이했는데, 이후 따로 Point 클래스를 사용하지 않고, boolean tmp 배열을 사용하여 풀이함

시간, 메모리 측면에서 tmp 배열을 사용하는 것이 더 효율적이었음


yeongleej commented 1 month ago

🤔 시간복잡도 고려사항

💡 풀이 아이디어

baexxbin commented 1 month ago

🤔 시간복잡도 고려사항


💡 풀이 아이디어

// 0. 초기 영양제 주입
(N-1,0), (N-1,1), (N-2,0), (N-2,1) 위치

// 1. 영양제 움직이기
movePill(d, p);

// 2. 리브로수 성장
growTree();

// 3. 새로운 특수 영양제 투입
injectPill();

// 4. 리브로수 높이 총 합
for문 돌면서 총 합 구함

음수 처리랑, 영양제 위치 먼저 다 성장하지 않고 동시에 대각선을 보도록 진행했어서 어디서 틀렸나 헤맸었다ㅜ 음수 처리 조심! 그리고 시뮬레이션인 만큼 코드 동작흐름을 잘 파악해야겠다.

icegosimperson commented 1 month ago

🤔 시간복잡도 고려사항 단순 구현, O(N^2) 이상 가능

💡 풀이 아이디어

int nx = (i + dx[direction] * pace + N) % N;
int ny = (j + dy[direction] * pace + N) % N;

dx, dy 배열 설정할 때 일반 좌표평면으로 착각해서 →(1, 0) ↗(1, 1) ↑(0, 1) ↖(-1, 1) ←(-1, 0) ↙(-1, -1) ↓(0, -1) ↘(1, -1) 이런식으로 풀었었습니다ㅎ,,, 2차원배열 [y][x] 매핑 부분 다시 공부했습니다!

Jewan1120 commented 1 month ago

🤔 시간복잡도 고려사항

💡 풀이 아이디어

아침에 올린 줄 알았는데 안 올라가졌네요.. 다시 작성했습니다..😿 나무 성장 및 영양제 위치를 저장하는 방법은 새로운 배열을 만든 다음 마지막에 갱신해주는 방법이 안전한 것 같습니다