민을 사용하기에 알고리즘 헤더파일이 들어가고, 벡터는 처음 방향이 변경되는 저보가 들어갑니다. 그리고 라인이라는 구조체에는 좌표 2개가 들어갑니다. 그리고 방향정보 총 5개의 변수가 들어갑니다. 그리고 이 변수들에 대해서 dir 의 경우에는 가로일때 0 표시, 세로 일때 1 표시를 하게 딥니다. 그리고 좌표들을 정렬해주는데, x2 가 큰 것으로도 설정합니다. 그러므로 일반적으로 생각하는 왼쪽에 엑스 큰값, 위쪽이 큰값입니다. 와이는. 이것을 주의하도록 합니다. 그리고 이에 대해서 벡터에 4개의 선분을 그어주도록 합니다. 그리고 dx dy 의 값에 주의를 하도록 합니다. 엑스는 오른쪽으로 갈때 커지는 것이고, 와이는 위로 갈때 커지는 값입니다. 0 1 2 3 의 순서는 북 서 남 동 순서 입니다. 다음으로 이제 메인문으로 들어오게 됩니다. 그리고 엘엔을 받게 되는데, 이것을 벡터에 넣어주게 되고 왼쪽회전이면 스핀에 1을 넣어주도록 합니다. 오른쪽 회전이면 -1 을 넣어주게 됩니다. 그리고 앞에는 초가 들어가 있습니다. 그리고 마지막에 inf, -1 을넣어주는 이유는. 모든 명령에 선분이 부딪히지 않을 수도 있으므로,inf 를 넣어줍니다. 오께이. 그 다음으로 추가 처음 4개의 선분을 넣어주도록 합니다. |
여기서 구조체를 정의하는 것을 보면 보통 변수만 설정하는 것과 달리 함수를 설정합니다. 함수 Line() { } 이렇게 선언하고 실제 함수를 보면 Line(int x1, int y1, int x2, int y2) : x1(x1) y1(y1) 일너식으로 가고 뒤에 {}중괄호 안에 원하는 변수의 연산을 시행합니다. 그리고 또 하나의 함수를 넣고 싶으면 set_point(); 라고 하고 새로운 함수를 정의합니다. 오께이. 저것의 이름이 무엇인가요 생성자 인가요? |
그다음으로 벡터의 라인에 새로운 변수를 선언합니다. 그리고 엘엔 변수 설정 inf 를 설정합니다. 오꼐이. 그리고 방향이 변하는 변수를 설정하고 그것을 입력을 받습니다. dx dy 는 북 서 남 동 방향으로 흘러가도록 합니다. 그다음으로 메인으로 들어와서 엘엔을바독 엘을 받습니다. 오께이. 그리고 초기 테두리를 설정합니다. 이때, 2개의 좌표에 대해서 엑스와 와이에 대해서 넣도록 합니다. 엘이 3이니까 오꼐이 저렇게 순서대로 넣고 바향이 새로 방향인지 가로 방향인지 나타내도록 합니다. 자 그다음에 이동하도록 합니다. 여기서 필요한 변수는 원점 0 0 과 동 방향으로 설정된 초기 설정값입니다. 그리고 ans 값에 0 을 넣고 시작하도록 합니다. 오꼐이 시작되었습니다. 아이는 엔까지인데 이때의 엔은 어디에서 받은 것인가요? 포문에는 돌때 들어온 정보의 갯수까지 넣도록 합니다. 그리고 t 는 최고값을 넣어두도록 합니다. 자 그다음 포문은 지금까지 생성된 라인의 갯수에 따라 달라집니다. 현재 처음에는 4개밖에 없으므로 4번 돌리도록 합니다. 먼저 첫번째 라인과 검사 결과를 확인하도록 합니다. |
변수가 많아서 헷갈리므로 디버깅 모드로 가도록 하겠습니다. 오께이 처음 티에 대해서, 방향이 막혀있는 쪽이므로, 3 방향이니까, 세로는 사이에 있고, 엑스가 선분의 안쪽에 있으면, 그리고 크기가 4차이 이므로 2보다 작으므로, 그러므로 2초 돌리기 전보다 쭉쭉 앞으로 간다면, 가지 않고 멈춘다면, 오께이 이프문을 그대로 지나가도록 내버려 둡니다. 엔서는 일단, 앞의 초가 나와있는 것이므로, 엔서에는 그값을 더하도록 하고, 엔엑스 엔와이가 거기까지 전진하도록 합니다. 방향에 대해서는 이렇게 순서대로 하고 0 나누기를 방지하기 위해서 +4 를 해준것 같습니다. 오께이 방향에 대해서 풀이하는 방법 하나 배웠습니다. 오께이 디아이알을 이렇게 넣어둡니다. 그리고 새루운 라인을 하나 만듭니다. 엑스 와이의 크기를 정해두는 것은 오께이 알겠습니다. 그리고 다시 포문으로도 들어가게 됩니다. 왜 가로 세로가 나누어져 있나요. 가로로 들어왔습니다. 가로로 들어온 이후에 지금 방향이 북쪽이면 남쪽이면 직선이 가로 이고 뱡향이 동쪽 서쪽 일때는 어떻게 처리하는 것이지? 일단 벽까지 탈 수 있다는 것이 이상한대? 같다는 표시가 어떻게 들어갈 수 있는 것이지? 테두리 선분이 아니라 다른 선분과 비교해서 그렇게 가능합니다. 이렇게 찾기 위해서는 경우의 수를 2개로 나누고 그 아래 4개로 나누어 있습니다. 오께이. |
뱀 문제를 한번 스스로 풀어보도록 하겠습니다. 그 전에 연구소 문제 한번 다시 풀어보도록 하겠습니다. 기억을 되살리기 위해서. |