구현 18

[백준-파이썬] 16235: 나무 재테크

문제 풀러 가기! 정성스럽게 구현했다 ^^ 엄청난 알고리즘!!보다는, 조건을 잘 따지고 실수하지 않으면 되는 것 같다.. 잘못을 찾을 때, 디버깅 연습도 해서 좋았다. ^^ 내가 실수했던 부분들!✅ 가을) 나무 개수가 5의 배수이면 인접한 8개 칸에 나이가 1인 나무가 생긴다. 그런데 나는 ni, nj = i+ki, j+kj 부분을 처음에 안 썼다.. 그리고 ni, nj가 아니라 ki, kj를 범위 체크하고, ki, kj부분에 나무를 더해줘서 문제였다... K년 후에 남은 나무 개수를 셀 때! 처음에는 쭉 보면서 그 지점에 나무가 있으면 1을 더했다. 그런데 그 지점에 나무가 여러 그루 있을 수도 있으니까, ground_tree[i][j]의 len을 세줘야 했다. 코드 👩‍💻 import sys inpu..

[SWEA - 파이썬] 2382.미생물 격리

문제 보러 가기 풀이 ❄ "엄청난 알고리즘!! 을 알아야 해!!"라기 보다는 조건을 꼼꼼히 반영해서 푸는 문제였다. 나는 미생물 군집의 인덱스, 수, 이동 방향들을 리스트로 저장하고 풀었다. M 시간 동안 아래 과정을 반복했다. 1. 이동 시키기 - 이동 방향에 맞춰서 이동시키기(이동 결과를 리스트에 반영) 2. 약품 부분으로 간 미생물 군집 처리 - 수를 절반으로 - 만약 수가 0이 되면 군집 없애기 - 방향은 반대로 - 처음에는 원래 쓰던 리스트에서 del을 해서, 수가 0이 된 미생물 군집을 처리했다. 그런데 틀렸다.. 잠깐 슬퍼하다가 생각해보니, 원래 리스트에서 del을 하면 리스트 길이가 짧아져서 끝까지 볼 수 없게 된다. 그래서 새로운 리스트(new_microbes)를 만들어서 사용했고, 과정..

[백준-파이썬] 23739: 벼락치기

문제 풀러 가기 while을 열심히 써서 풀었다 ! while 안에 while을 써서 문제 푼 것은 오랜만인 것 같다~ 1.봐야할 챕터가 없을 때까지 쭉~ 본다. 2.30분 동안 볼 수 있는 챕터를 본다! 1) 남은 시간 미만으로 그 챕터를 다 볼 수 있는 경우 => 정답을 1 더하고, 남은 시간을 업데이트한다.(남은 시간 - 그 챕터 볼 때 걸리는 시간) 챕터 수도 1 늘려주고! 2) 남은 시간으로 그 챕터 절반 이상을 볼 수 있는데, 그렇다고 시간이 남지는 않는 경우 => 정답을 1 더하고, 봐야 할 챕터 수도 1 늘린다. 그리고 이제 다시 '2.30분 동안 볼 수 있는 챕터를 본다!'를 시작해야 하니까 break. 3) 남은 시간으로 그 챕터 절반 이상 볼 수 없는 경우. => 정답은..

[백준-파이썬] 15686: 치킨 배달

문제 보러 가기 정말 브루트포스하게 풀었다. 하나 하나 따지면서!! 도시 정보를 다 보면서 치킨집 위치 찾기. 찾는 김에 개수도 세기 치킨집이 M개보다 크면, 치킨집 중 M개 뽑기(순서 상관 없으니 조합) - 치킨집이 M개 이하이면, 따로 뽑을 필요 없음. 각각의 경우를 보면서, 도시의 치킨 거리 계산하기. (도시 정보를 쭉 보면서 집을 만나면, 집마다 '치킨 거리' 찾기. 집마다 치킨 거리 찾을 때는, 그 경우에 남겨두기로 한 치킨집들을 다 돌아보면서 젤 가까운 거리를 찾음.) 가장 도시의 치킨 거리 작을 때가 정답! import sys input = sys.stdin.readline MIIS = lambda: map(int, input().split()) N, M = MIIS() cit..

[백준-파이썬] 17114:미세먼지 안녕!

문제 풀러 가기~ 풀이 일단은 공기 청정기 위치를 찾았다. 항상 1번 열에 설치되어 있고, 크기는 두 행을 차지한다. 공기 청정기의 위쪽 행을 찾았다! 그리고 미세먼지가 확산되는 일, 공기 청정기가 작동할 때 일어나는 일을 함수로 만들었다. 미세먼지가 확산될 때는, 미리 어떤 곳에 미세먼지가 있고, 얼마나 있는지 파악해서 리스트에 넣은 후에, 그 리스트를 돌면서 인접한 네 방향으로 확산되게 했다. 또 그 위치의 미세먼지 양도 바꿔주었다. 사실 처음에는 미리 미세먼지의 위치, 양을 저장하지 않고 그냥 for문 두개로 미세먼지 있는 곳을 만나면 확산되게 했다. 그러면 원래는 미세먼지가 없었는데, 미세먼지 확산으로 이제 미세먼지가 있는 곳도 원래 미세먼지가 있던 곳처럼 처리된다. 미세먼지의 양도 원래 양만큼이..

[백준-파이썬] 14719: 빗물

문제 보러 가기 접근 🔥 자기보다 높은 블록이 좌우에 있어야 빗물이 고인다! 높이 별로 쭉~ 돌면서, 그 높이보다 낮게 쌓인 지점이 있는지 보았다. 그 지점이 있으면, 그 지점에서 왼쪽과 오른쪽에 그 높이보다 높게 블록이 쌓였는지 보았다. 양쪽에 그 지점보다 높게 블록이 쌓인 지점이 있으면, 그 지점에는 물이 고일 수 있다. 그림에서처럼 1번 동그라미들에서 각각 좌우에 본인보다 높은 지점이 있는지 봐주고, 2번 동그라미 친 부분에서도 그렇게 하고.. 이렇게 다 봐줬다.. 최악의 경우를 생각해봤는데, 500(높이) X 500(너비) X 500(좌우 봐주는 것) 정도니까 시간 내에 통과할 것 같아서, 이렇게 코드를 짰다.. 좀 비효율적인 것 같긴 하지만 시간 내에 통과는 했다. 다른 분들의 코드도 봐야겠다~..

[백준-파이썬] 21776: 가희와 읽기 쓰기 놀이

와아아~~~ 이 문제를 풀어서 편안하게 잠잘 수 있겠다 ㅎㅎ 처음에는 메모리 초과 해결하느라고, 나중에는 게임 종료 후 빈 문자열이면 EMPTY 출력하는 걸 깜박해서 많이 틀렸다.. 문제 보러 가기 아이디어 카드의 갯수, 사람의 수가 최대 9..!! 사람들이 어떤 순서로 카드를 낼 수 있는지를 순열로 구했다. 각 순열대로 했을 때의 결과를 리스트로 저장했고, 사전순으로 출력이니까 정렬을 한 후에 출력했다. 같은 결과가 나오면 하나로 출력하라고 해서, set을 이용했다. (set에 저장한 후에 마지막에 리스트로 바꿔서 정렬했다.) 처음에는 모든 경우의 순열을 다 구했다. 그랬더니 메모리 초과가 나왔다..!! -예) 1번 사람이 카드 한 장, 2번 사람이 카드 한 장을 가진 경우라고 생각해보자. 사람들이 어..

[백준-파이썬] 2174: 로봇 시뮬레이션

문제 보러 가기! 아이디어 😍 뭔가 특별한 알고리즘을 쓰진 않은 것 같다. 다만 y축(column) 받을 때 인덱스가 좀 헷갈렸다.. (column 인덱스는 위에서 아래로 갈 때 0부터 수가 증가하는데, 문제에서는 아래에서 위로 갈 때 1부터 수가 증가하는 모양으로 입력이 들어온다.) 그것만 주의하면 괜찮을 것 같다 ! 코드 😆 import collections direction_move_index = {'W': (0, -1), 'S': (1, 0), 'E': (0, 1), 'N': (-1, 0)} r_direction = ['N', 'E', 'S', 'W'] # 오른쪽으로 l_direction = ['N', 'W', 'S', 'E'] # 왼쪽으로 def crash_wall(i, j): """ 범위 밖으..

728x90