https://www.acmicpc.net/problem/1913 달팽이 회전 원리가 헷갈리면 무조건 이 문제 푸는 걸 강추한다.나는 이 외에도 달팽이 회전 문제를 하도 많이 풀었더니 외워버렸다.. (feat. 상어 시리즈) import sysinput = sys.stdin.readlineN = int(input())Want = int(input())board = [[0] * N for _ in range(N)]di = [-1, 0, 1, 0]dj = [0, 1, 0, -1]ci, cj = N // 2, N // 2max_count, count, flag = 1, 0, 0dr = 0num = 1board[ci][cj] = 1while (ci, cj) != (0, 0): num += 1 coun..
https://www.acmicpc.net/problem/14890 import sysinput = sys.stdin.readlineN, L = map(int, input().split())lines = [list(map(int, input().split())) for _ in range(N)] answer = 0def is_ok(line): visited = [False for _ in range(N)] for i in range(N-1): if line[i] == line[i+1]: continue if abs(line[i] - line[i+1]) >= 2: return False ..
https://www.acmicpc.net/problem/14891 접근 방식문제를 보자마자 연쇄적으로 톱니바퀴가 돌아가니 DFS로 풀어야겠다고 생각했다.근데 이제 돌아가는 방향을 고려해야 했고, 자석의 극성도 확인해야 됐다.. 톱니바퀴가 무조건 연쇄적으로 돌아가는 게 아니기 때문에 고려해야 할 부분이 많았다. 그래서 회전 부분은 left, right 각각 메서드로 분리했다. DFS 부분 풀이는 다음과 같다.우선 한 번 체크한 톱니바퀴는 또 체크하면 안 되기 때문에 (두 번 돌아감) 방문처리를 해주었다. 그래프에서 제일 중요한 방문처리 !!!그러고 왼쪽에 있는 극성과 오른쪽에 있는 극성이 다른지 확인해 주었다. 어차피 톱니바퀴는 4개 있기 때문에 그 개수를 벗어나지 않는 선에서 분기처리 했다.이때 중요한..
https://www.acmicpc.net/problem/3190 접근 방식초반에 문제 이해를 완전 잘못해서 오래 헤맸다.. 헤맨 부분은 아래와 같다.예를 들어8 D10 D순으로 방향을 이동하는데, 이게 이 아니라, 이다.즉, 여기서 말하는 10초는 새로운 10초가 아니라 누적된 10초인 것이다.. 그리고, 또 헤맨 부분은예제 2번에서8 D10 D11 D13 L이렇게 이동한다고 한다. 그런데 이때 13초가 지난 후 왼쪽으로 방향을 틀어준 다음 반복문을 끝내버렸다. 마지막으로 방향을 틀어줘도 앞으로 전진할 수 있음에도 불구하고 반복문을 끝내버렸다.그래서 이 부분은 벽에 부딪히거나 자신의 몸에 닿은 경우가 아니면 float('inf')만큼 앞으로 가게 했다. 그러면 언젠가 벽에 부딪히기 때문이다. 만약, 벽..
https://www.acmicpc.net/problem/16234 접근 방식문제를 보면 인접한 나라들 사이의 인구수를 고려해서 탐색해야 한다고 나와있다. 여기서 그래프 문제라는 것을 파악했다.이후에는 인접한 칸들 간의 인구수를 비교하고, 그게 조건에 부합하면 queue에 넣었다. 이때 주의해야 할 점이 한 번의 탐색이 끝난 후, 방문하지 않은 나라가 있을 경우 그 나라를 시작으로 또 탐색해야 한다. 왜냐면 그 나라를 기준으로 새로운 연합이 만들어질 수 있기 때문이다.(이때 이미 다른 연합에 포함된 나라는 고려하지 않는다.)위 과정을 possible() 메서드와 bfs() 메서드를 엮어서 구현했다. 방문하지 않은 나라가 있을 경우 bfs()로 탐색을 시작하고, 만약 인구 이동이 일어나면 문제의 정답인 c..
https://www.acmicpc.net/problem/162366개월 전에 풀었던 문젠데 한 번 더 풀었다.. 문제만 익숙했고 푸는 방식은 여전히 헷갈렸다. 헷갈렸던 점먹을 수 있는 물고기가 한 마리보다 많으면, 거리가 가장 가까운 물고기를 먹는다.거리가 가까운 물고기 많다면, 가장 위에 있는 물고기, 그러한 물고기도 많다면, 가장 왼쪽에 있는 물고기를 먹는다.사실상 이 조건 때문에 골드 3인 거 같다. 나머지는 보통의 그래프 탐색 문제와 똑같다. 문제 풀이문제에서 주어지는 기본 조건이 많기 때문에 미리 선언해야 한다. 상어의 크기, 상어가 먹은 물고기 개수, 상어의 위치, 총 소요 시간 등 미리 변수로 선언해 줬다. 그리고 처음 상어의 위치를 찾아줬다. 왜냐면 상어의 위치를 기점으로 물고기를 찾아..