구현
-
상황 자체는 쉽게 잡았으나, 구현에서 살짝 애를 먹었다. (사실 2시간 잔 상태로 기본 틀을 잡아서 몇번 더 틀렸다 ㅋㅋ) 일단 이 문제를 풀기 위해서 상황 자체를 바꿔가면서 상황을 이해하려 해야한다. 그러면 크게 3가지 상황으로 이 문제를 바라볼 수 있다. 1. 세로가 홀수인 경우 이 경우는 생각보다 매우 쉽다. ㄹ모양으로 계속해서 왼쪽, 오른쪽으로 타고 내려가면 된다. 구현 자체는 zero base로 짯다고 가정했을 때, 세로가 짝수이면 Right, 홀수이면 Left를 출력해주면 된다. 2. 세로가 짝수이나, 가로가 홀수인 경우 이 경우는 1번 케이스의 변형으로 사각형을 90도 돌렸다고 생각해보면 1번 케이스로 치환할 수 있다. 모양은 위 아래를 반복하면서 전체적으로 오른쪽으로 진행해주면 된다. 구현..
[백준 2873번] [그리디 / 구현] 롤러코스터상황 자체는 쉽게 잡았으나, 구현에서 살짝 애를 먹었다. (사실 2시간 잔 상태로 기본 틀을 잡아서 몇번 더 틀렸다 ㅋㅋ) 일단 이 문제를 풀기 위해서 상황 자체를 바꿔가면서 상황을 이해하려 해야한다. 그러면 크게 3가지 상황으로 이 문제를 바라볼 수 있다. 1. 세로가 홀수인 경우 이 경우는 생각보다 매우 쉽다. ㄹ모양으로 계속해서 왼쪽, 오른쪽으로 타고 내려가면 된다. 구현 자체는 zero base로 짯다고 가정했을 때, 세로가 짝수이면 Right, 홀수이면 Left를 출력해주면 된다. 2. 세로가 짝수이나, 가로가 홀수인 경우 이 경우는 1번 케이스의 변형으로 사각형을 90도 돌렸다고 생각해보면 1번 케이스로 치환할 수 있다. 모양은 위 아래를 반복하면서 전체적으로 오른쪽으로 진행해주면 된다. 구현..
2021.02.26 -
어렵지는 않은데, 효율적으로 방법을 고안하는데 시간을 많이 쏟았다. 시계 방향으로 주어지는 경우에는 기본적으로 index와 방향을 매칭시키는 것이 좋다. 예를 들어 북쪽 방향으로 이동하는 것을 0, 동쪽은 1, 남쪽은 2, 서쪽은 3으로 매칭시키게 되면 회전시킨때마다 방향 + 1로 취급해주면 된다. (물론 3의 경우만 따로 0으로 취급해주면 된다.) 막힌 것을 따로 체크해주면서 진행해주면 된다. 다만, direction별로 계속 if문이 들어가므로 함수를 따로 잡는 것이 유리하다. #include #include #include using namespace std; int m, n; int change_num = 0; int count_store = 1; // 방향 바꿔주는 함수 int change_di..
[백준 1952번] [구현] 달팽이 2어렵지는 않은데, 효율적으로 방법을 고안하는데 시간을 많이 쏟았다. 시계 방향으로 주어지는 경우에는 기본적으로 index와 방향을 매칭시키는 것이 좋다. 예를 들어 북쪽 방향으로 이동하는 것을 0, 동쪽은 1, 남쪽은 2, 서쪽은 3으로 매칭시키게 되면 회전시킨때마다 방향 + 1로 취급해주면 된다. (물론 3의 경우만 따로 0으로 취급해주면 된다.) 막힌 것을 따로 체크해주면서 진행해주면 된다. 다만, direction별로 계속 if문이 들어가므로 함수를 따로 잡는 것이 유리하다. #include #include #include using namespace std; int m, n; int change_num = 0; int count_store = 1; // 방향 바꿔주는 함수 int change_di..
2021.01.02