백준 1012번 - 유기농 배추

백준 1012번 바로가기 나의 풀이 import sys sys.setrecursionlimit(10**6) def check(x,y): if not 0<=x<n or not 0<=y<m: return False if graph[x][y] == 1: graph[x][y] = 0 check(x-1,y) check(x+1,y) check(x,y-1) check(x,y+1) return True return False t = int(input()) for _ in range(t): m, n, k = map(int, input().split()) graph = [[0] * m for _ in range(n)] for _ in range(k): a, b = map(int, input().split()) graph[b][a] = 1 count = 0 for i in range(n): for j in range(m): if check(i,j): count += 1 print(count) CODE REVIEW 그래프 이론을 응용한 문제. 문제 조건을 그래프 이론을 활용할 수 있는 형태로 조작하는 과정에 대한 발상이 쉽지 않았다. 기본적인 아이디어는 힌트를 얻어가며 코드를 작성했다. DFS 탐색과정에서 for문이 일정 횟수 이상 넘어가다보니 recursion error이 발생했다. 백준에서는 이러한 런타임 에러에 대한 해결법을 제공하는데, sys.setrecursionlimit()을 이용해서 코드 수정 없이 문제를 해결했다. check(x,y)부분의 발상이 너무 어려웠다. 재귀 함수를 적재적소에 잘 써먹자!

2023-5-26 · 1 min · 143 words · Junha

백준 2606번 - 바이러스

백준 2606번 바로가기 나의 풀이 vertexList = [i for i in range(int(input()))] edgeList = [] for _ in range(int(input())): a,b=map(int,input().split()) edgeList.append((a,b)) edgeList.append((b,a)) adjacencyList = [[] for vertex in vertexList] for edge in edgeList: adjacencyList[edge[0]-1].append(edge[1]) stack = [1] visitedVertex = [] while stack: current = stack.pop() if current not in visitedVertex: visitedVertex.append(current) stack += adjacencyList[current-1] print(len(visitedVertex)-1) CODE REVIEW 백준에서 그래프 이론의 문제를 풀기 시작했다. 기본적인 DFS와 BFS부터 공부했는데, 이론은 쉬운데 구현하려니까 은근 복잡했다. 2606번 문제에서 주의할 점은 간선(Edge)이 방향성이 없다는 점이다. 처음에 자꾸만 답에 오류가 발생하길래 이유를 찾아봤더니, edgeList를 만드는 과정에서 (a,b)는 고려했지만 (b,a)를 고려하지 못했기 때문이라는 것을 깨달았다. 이 풀이에서는 list을 이용해서 graph를 나타냈는데, adjacencyList를 불러올 때에 인덱스가 1씩 밀리는걸 고려해주어야해서 매우 골치아프다. 다음에는 dictionary 형태로 만들어서 Vertex(정점,Node) 번호만 알면 바로 구할 수 있게 구현해볼 계획이다. 깊이우선탐색(DFS, Depth First Search) 에 대해 아주 잘 설명된 영상 ...

2023-5-26 · 1 min · 136 words · Junha

Starbucks 스타벅스 쿨 라임 피지오

답답한 마음에 스타벅스에서 청량감 넘치는 음료를 주문했다. 오전에 이미 아메리카노 한 잔을 마시기도 했고, 톡톡 쏘는 상큼한 무언가가 땡겼기에 쿨 라임 피지오메뉴로 결정했다. 슬슬 날씨가 더워지고 습해져서 마음속까지 시원하게 해주는게 땡겼는데 드디어 그 답답함이 해소되었따. 시큼한 라임맛과 톡톡 쏘는 탄산의 맛이 마음에 들었는데, 다음에는 탄산 추가랑 라임 베이스 추가 커스텀을 해서 마실 계획이다. 사이즈별 가격은 Tall-5,900원 / Grande-6,400원 / Venti-6,900원 이다. Tall기준 110kcal 정도여서 칼로리 부담 크기 없이 즐길 수 있는 가벼운 음료다. ...

2023-5-25 · 1 min · 104 words · Junha

누리호 3차 발사 성공, 대한민국의 항공우주산업의 현주소

원래 2023년 5월 24일 발사 예정이었던 누리호 3차 발사는 기술문제로 하루가 미루어졌다. 예전에 나로호 발사 당시에 기술적인 문제로 두 번의 고배를 마셨던 전적이 있어서 이번 발사도 이렇게 무산되나 싶었는데 다행히 이튿 날인 5월 25일 오후에 성공적으로 발사되었다는 소식을 듣게 되었다. 핸드폰으로 실시간으로 발사 장면을 봤는데 왠지 모를 벅차오름이 있었다. 과학계가 발전하기 위해서는 다양한 프로젝트에 대한 자금 지원이 정말 중요한데, 이번 누리호 발사처럼 대중들이 눈으로 볼 수 있는 성공은 기꺼이 투자해도 괜찮다는 마음을 열어준다. 사실 최근들어서 ‘왜 기초과학에 혈세인 세금을 투자해야하냐?‘에 대한 비판이 일부 거세지고 있는데, 가끔씩은 이렇게 가시적인 프로젝트가 열려서 일반 국민들이 납득할 수 있는 성과도 중요하다고 생각한다. ...

2023-5-25 · 1 min · 185 words · Junha

백준 10425번 - 피보나치 인버스

백준 10425번 바로가기 나의 풀이 f = [0] + [1]*100009 for i in range(2,100009): f[i] = f[i-1] + f[i-2] for _ in range(int(input())): if (n:=int(input())) == 1: print(2) else: print(f.index(n)) CODE REVIEW python의 강력함을 몸소 체험할 수 있는 문제였다. 정수 자료형의 범위가 무제한이라 큰 숫자를 저장할 수 있다는게 다른 언어에 비해서 너무 편리하다. index() method을 이용해서 문제를 풀어냈다.

2023-5-25 · 1 min · 58 words · Junha