본문 바로가기

분류 전체보기521

[ 파이썬(python) ] 백준 2667 - 단지번호붙이기 📌 백준 2667 - 단지번호붙이기 문제 설명 💡 나의 풀이 아침부터 저녁까지 이 문제만 잡고 늘어졌는데 드디어 풀었다. 😇 😇 특히, 처음에 방문한 좌표를 1로 선언한 이유와, 새로운 좌표를 1로 선언한 이유를 잘 몰라서 엄청 헤맸다. 이 문제는 BFS, DFS 파트에 약한 나에게 많은 도움을 준 문제다. 또, BFS와 DFS로 풀 수 있는데 지금은 BFS버전이고 내일은 DFS로 풀어봐야겠다. 푸는 방법으로 append와 flag방식 두 개로 나눠서 풀었는데 flag 실행시간이 append 보다 4ms정도 더 빨랐다.( 4ms면 별 의미 없는 시간차이긴 하지만, True, False가 근소하게 더 빠르다는 것을 참고적으로 알아두자!) 개별 단지수를 구하는 코드는 고민을 많이 했는데, 결론적으로 {}를 .. 2021. 4. 16.
[ 파이썬(python) ] 백준 1260 - DFS와 BFS 📌 백준 1260 - DFS와 BFS 문제 설명 💡 나의 풀이 BFS와 DFS를 둘 다 사용해야 하는 문제인데 풀이 방법은 다음과 같다. 문제에서 정점 번호가 작은 것을 먼저 방문한다.를 통해 입력값을 인접리스트(adjacent list)으로 넣을 때 sort를 붙여 작은 값부터 들어가게끔 설정했다. dfs의 구현 순서는 다음과 같다. 처음 들어온 값 index의 flag를 True로 바꾼다. 만약, 인접 노드를 방문하지 않았다면(flag = False), 해당 인접노드로 들어가서 방문하지 않은 인접 노드가 없을 때까지 들어간다.(recursive) 재귀문을 탈출하면서 해당 값을 하나씩 출력한다. bfs의 구현순서는 다음과 같다. 처음 들어온 값을 queue에 넣는다. 처음 들어온 값 index의 fla.. 2021. 4. 16.
네이버 지식인 고수 등급이 되다. ✏️ 서론 취업 준비를 위해 알고리즘을 공부하면서 복기가 잘 되지 않는 문제들을 어떻게 할까?라는 생각을 하다가 문득, 네이버 지식인에 들어가 어렸을 적 내가 질문했던 글들이 보였다. 이번에는 질문 대신 답변을 하고싶어 관심 메뉴에 들어갔는데, 답변을 하려면 내가 잘 알고 있어야 하는 분야가 있어야 했다. 그래서, 알고리즘을 공부하고 있으니까 지식인에 올라오는 질문들을 답변해주면서 나도 같이 공부해보자라는 생각이 들었고 그때부터 python에 관한 질문에 알고 있는 지식들을 동원해 답변했다. --- ✏️ 본론 처음 내 등급은 초수였는데, 나도 모르게 재미가 붙어 시간 날 때마다 지식인에 들어가 답변할 질문들이 있는지 살펴봤고, 내가 알고 있는 내용이거나, 공부하고 싶은 내용이면 최대한 성의껏 답변을 했다.. 2021. 4. 15.
[ 파이썬(python) ] 이것이 코딩 테스트다 - 음료수 얼려먹기(DFS) 📌 이것이 코딩 테스트다 - 음료수 얼려먹기 영상 링크(42:48) 💡 나의 풀이 DFS로 문제를 해결 할 수 있는데, 0인 값이 상, 하, 좌, 우로 연결되어 있는 노드를 묶으면 된다. BFS, DFS는 조건 설정이 중요한 것 같다. 특정한 지점의 주변 상, 하, 좌, 우를 살펴보고 주변 지점 중 값이 0이면서 아직 방문하지 않은 지점이 있으면 해당 지점을 방문한다. 방문한 지점에서 다시 상, 하, 좌, 우를 살펴보면서 방문을 다시 진행하면, 연결된 모든 지점을 방문할 수 있다. 1~2번의 과정을 모든 노드에 반복하고, 방문하지 않은 지점의 수를 센다. ''' 4 5 00110 00011 11111 00000 ''' ''' 15 14 00000111100000 11111101111110 11011101.. 2021. 4. 15.
[ 파이썬(python) ] 이것이 코딩 테스트다 - 미로 탈출(BFS) 📌 이것이 코딩테스트다 - 미로 탈출 영상 링크(51:30) 💡 나의 풀이 BFS를 이용하는 흐름을 알아야 풀 수 있었는데, 그 흐름을 잘 몰라서 못 풀었다. 이전까지는 입력값을 그래프로 변환해서 풀었는데, 입력값이 이중 리스트일때는 어떻게 줘야 할지 감이 잘 잡히지 않았다. 또, BFS문제를 풀어보니까 값이 어떻게 바뀌는지 흐름을 잡는것이 중요하다고 느꼈다. from collections import deque n, m = map(int, input().split()) graph = [list(map(int, input())) for _ in range(n)] # 상하좌우 선언 dx = [-1, 1, 0, 0] dy = [0, 0, -1, 1] def bfs(x, y): queue = deque() .. 2021. 4. 15.