PS/백준

PS/백준

[백준] 1913번 달팽이 (python 정답 코드)

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..

PS/백준

[백준] 21610번 마법사 상어와 비바라기 (python 정답 코드)

https://www.acmicpc.net/problem/21610 from collections import dequeN, M = map(int, input().split())board = [list(map(int, input().split())) for _ in range(N)]movement = deque()for _ in range(M): d, s = map(int, input().split()) movement.append([d-1, s])# ←, ↖, ↑, ↗, →, ↘, ↓, ↙di = [0, -1, -1, -1, 0, 1, 1, 1]dj = [-1, -1, 0, 1, 1, 1, 0, -1]groom = [(N-1, 0), (N-1, 1), (N-2, 0), (N-2, 1)]vis..

PS/백준

[백준] 14890번 경사로 (python 정답 코드)

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 ..

PS/백준

[백준] 19236번 청소년 상어 (python 정답 코드)

https://www.acmicpc.net/problem/19236 import sys, collectionsfrom collections import dequeinput = sys.stdin.readlinedx = [-1, -1, 0, 1, 1, 1, 0, -1]dy = [0, -1, -1, -1, 0, 1, 1, 1]sea = [[[0]*2 for _ in range(4)] for _ in range(4)]for i in range(4): fish_lst = list(map(int, input().split())) for j in range(4): sea[i][j] = [fish_lst[j*2], fish_lst[j*2+1]-1]def find_fish(number, sea):..

PS/백준

[백준] 14891번 톱니바퀴 (python)

https://www.acmicpc.net/problem/14891 접근 방식문제를 보자마자 연쇄적으로 톱니바퀴가 돌아가니 DFS로 풀어야겠다고 생각했다.근데 이제 돌아가는 방향을 고려해야 했고, 자석의 극성도 확인해야 됐다.. 톱니바퀴가 무조건 연쇄적으로 돌아가는 게 아니기 때문에 고려해야 할 부분이 많았다. 그래서 회전 부분은 left, right 각각 메서드로 분리했다. DFS 부분 풀이는 다음과 같다.우선 한 번 체크한 톱니바퀴는 또 체크하면 안 되기 때문에 (두 번 돌아감) 방문처리를 해주었다. 그래프에서 제일 중요한 방문처리 !!!그러고 왼쪽에 있는 극성과 오른쪽에 있는 극성이 다른지 확인해 주었다. 어차피 톱니바퀴는 4개 있기 때문에 그 개수를 벗어나지 않는 선에서 분기처리 했다.이때 중요한..

PS/백준

[백준] 3190번 뱀 (python)

https://www.acmicpc.net/problem/3190 접근 방식초반에 문제 이해를 완전 잘못해서 오래 헤맸다.. 헤맨 부분은 아래와 같다.예를 들어8 D10 D순으로 방향을 이동하는데, 이게 이 아니라, 이다.즉, 여기서 말하는 10초는 새로운 10초가 아니라 누적된 10초인 것이다.. 그리고, 또 헤맨 부분은예제 2번에서8 D10 D11 D13 L이렇게 이동한다고 한다. 그런데 이때 13초가 지난 후 왼쪽으로 방향을 틀어준 다음 반복문을 끝내버렸다. 마지막으로 방향을 틀어줘도 앞으로 전진할 수 있음에도 불구하고 반복문을 끝내버렸다.그래서 이 부분은 벽에 부딪히거나 자신의 몸에 닿은 경우가 아니면 float('inf')만큼 앞으로 가게 했다. 그러면 언젠가 벽에 부딪히기 때문이다. 만약, 벽..

PS/백준

[백준] 16234번 인구 이동 (python)

https://www.acmicpc.net/problem/16234 접근 방식문제를 보면 인접한 나라들 사이의 인구수를 고려해서 탐색해야 한다고 나와있다. 여기서 그래프 문제라는 것을 파악했다.이후에는 인접한 칸들 간의 인구수를 비교하고, 그게 조건에 부합하면 queue에 넣었다. 이때 주의해야 할 점이 한 번의 탐색이 끝난 후, 방문하지 않은 나라가 있을 경우 그 나라를 시작으로 또 탐색해야 한다. 왜냐면 그 나라를 기준으로 새로운 연합이 만들어질 수 있기 때문이다.(이때 이미 다른 연합에 포함된 나라는 고려하지 않는다.)위 과정을 possible() 메서드와 bfs() 메서드를 엮어서 구현했다. 방문하지 않은 나라가 있을 경우 bfs()로 탐색을 시작하고, 만약 인구 이동이 일어나면 문제의 정답인 c..

PS/백준

[백준] 16236번 아기 상어 (python)

https://www.acmicpc.net/problem/162366개월 전에 풀었던 문젠데 한 번 더 풀었다.. 문제만 익숙했고 푸는 방식은 여전히 헷갈렸다. 헷갈렸던 점먹을 수 있는 물고기가 한 마리보다 많으면, 거리가 가장 가까운 물고기를 먹는다.거리가 가까운 물고기 많다면, 가장 위에 있는 물고기, 그러한 물고기도 많다면, 가장 왼쪽에 있는 물고기를 먹는다.사실상 이 조건 때문에 골드 3인 거 같다. 나머지는 보통의 그래프 탐색 문제와 똑같다.  문제 풀이문제에서 주어지는 기본 조건이 많기 때문에 미리 선언해야 한다. 상어의 크기, 상어가 먹은 물고기 개수, 상어의 위치, 총 소요 시간 등 미리 변수로 선언해 줬다. 그리고 처음 상어의 위치를 찾아줬다. 왜냐면 상어의 위치를 기점으로 물고기를 찾아..

yo0oni
'PS/백준' 카테고리의 글 목록