문제 보기이 문제는 BFS에 브루트포스를 응용한 문제이다.처음에 문제를 읽을 당시에는 어떻게 코드를 짜야할 지 몰랐지만, 질문게시판을 뒤지다 보니 영감을 얻었다.한 번 방문할 때마다 각 방향을 탐색하는 건 기존의 BFS 동일하다.하지만 판을 기울일 때 벽, 구멍 또는 다른 공에 닿을 때까지 직진을 해야한다는 것에 주의해야 한다. 또 주의해야할 점은, 두 개의 공을 굴려서 같은 곳에서 멈추는 경우에는, 공이 굴러간 거리를 계산한 뒤, 굴러간 거리가 더 긴 공을 다시 굴러왔던 방향으로 1번 이동해야 한다. (그렇게 해야 공이 겹치지 않는다. 60~65번째 줄 참고) 67~69번째 줄을 보면 다음과 같은데, 이 부분의 코드가 없으면 count가 11이상이 되는 반례가 생긴다. # prevent count fr..
문제 보기예전에 오답처리를 2번 받고나서 귀찮아서 안 푼 문제인 것 같다.문제 해결을 위한 방법은 매우 간단하다.어린 왕자가 출발점에서부터 도착점까지 최소한의 행성계의 이탈/진입 횟수를 측정하는 것인데, 이는 한 가지의 조건만 안다면 해결할 수 있다. 핵심 조건은 각 행성계를 기준으로, 출발점과 도착점 서로 행성계의 안팎으로 다른 위치에 있어야 한다는 것이다. 위의 그림에 해당하는 조건을 만족하는 행성계의 갯수를 세면 정답이다. 소스코드에서 위의 조건에 해당하는 조건문은 19번째 줄이다.점과 점 사이의 거리를 측정하기 위해서 원래 sqrt를 써야하지만, 나는 sqrt를 쓰지 않는 대신 행성계의 반지름의 길이를 제곱해서 비교하였다. 12345678910111213141516171819202122import..
문제보기 이 문제는 문제에서 요구하는 순서에 따라 코딩하면 되는 시뮬레이션 문제이다. 문제만 읽어보면 아주 쉬운 문제이지만, 나는 어디서 잘못됐는지 한동안 풀지 못했었다. 아직 많이 미숙한 것 같다. 코드 상에서 눈여겨 볼 점은, 로봇의 작동 순서 중 2-2단계가 없다는 것이다. 코드에서 2번째 while문은 로봇이 네 방향을 모두 탐색하면서 청소를 하기 위한 while문이다. 30번째 줄을 보면 nextDir = (nextDir + 3) % 4 부분이 있는데, 로봇이 보고있는 현재 방향에서 왼쪽을 탐색하는 게 아니라, 탐색할 방향만을 계속해서 바꾸는 것을 알 수 있다. (그리고 나중에 현재 로봇의 방향과 같다는 조건을 비교하면 네 방향을 모두 탐색했다는 뜻이 된다.) 이로써 2-2단계의 코드는 생략할 ..
문제보기 파이썬으로 풀어본 첫 알고리즘 문제이다. 처음에 문제를 읽었을 때는, 그저 문제에서 하라는대로 코딩을 하면 풀 수 있겠다 생각했지만 그건 아니었다. 가장 큰 실수를 범할 수 있는 부분 2가지가 있다. 첫째로, 봄에 양분이 모자라서 죽은 나무를 처리하기 위해 각 칸을 순회하면서 그 칸에서 죽은 나무를 삭제하는 동시에 바로 양분을 추가하는 것(여름 단계)이다. 즉, 각 칸을 순회할 때, 봄 단계의 처리가 모두 끝난 후에 여름 단계를 처리해야한다. 왜냐하면 각 칸을 순회할 때, 죽은 각 나무들의 양분을 바로 더해버리면 같은 칸에 있는 다음 나무 양분에게 영항을 끼치기 때문에 올바른 값이 나올 수가 없다. 둘째로, 문제에 다음과 같은 설명이 있다. "처음 두 개의 정수는 나무의 위치 (x, y)를 의미..
- Total
- Today
- Yesterday