일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- DP
- 코드트리
- minimum spanning tree
- B대면노래방
- 프로그래머스
- Planned
- 소프트웨어공학
- DFS
- programmers
- 그리디알고리즘
- 알고리즘
- MyPlaylist
- 실습
- 백준
- django
- 마라마라빔
- 장고
- 최소스패닝트리
- 데이터베이스
- 동적계획법
- 백트래킹
- 종합설계
- codetree
- Bellman-Ford
- 파이썬
- SQL
- 모각코
- Kruskal
- 함밥
- BFS
- Today
- Total
목록HUFS/HUFS 모각코 캠프 (27)
Leta Learns
예전에 팰린드롬 문제로 실버 난이도를 풀은 적 있는 것 같다. 난이도가 달라서 그런지는 몰라도 일단 쉽게 풀었다. 근데 좀 더 간단한 코드로 짤 수 있는 방법이 있을 것 같은 느낌.. import sys input = sys.stdin.readline num = [] a = 1 while a != '0': a = input().strip() num.append(a) for i in num: pal = 1 if i == '0': break if len(i) % 2 == 0: #짝수 for j in range(len(i)): if i[j] != i[len(i)-j-1]: pal = 0 break if j == len(i) // 2: break else: for j in range(len(i)): if i[j..
우와 모각코 어게인 알고리즘 문제 안 푼 지 오래 됐더니.. 문제 보고 바로 그래프 문제구나 라고 떠올리는데 오래 걸렸다. 그래프로 푸는 건 바로 그려지긴 했는데 bfs로 풀어야겠다는 생각이 바로 들진 않았다. 자기 자신과의 단계는 0이므로 이를 표현하기 위해 visited의 초기값을 -1로 지정하였다. bfs함수를 호출하면 해당 사람(?)의 visited 값을 0으로 바꾸어준다. (자기자신) 한 번 방문할 때마다 이전에 방문한 친구의 단계에서 1을 더해준다. 케빈 베이컨 수는 모든 사람과 케빈 베이컨 게임을 했을 때 나오는 단계의 합이므로 bfs 함수 종료 전에 sum(visited)를 구해주었다. 그리고 함수에서 빠져나온 뒤 이를 ans 리스트에 넣는다. 모든 유저에 대해서 bfs 함수를 실행한 후에..
Today I Learned 2021.07.07 - [HUFS/HUFS 모각코 캠프] - [모각코] 210707 Today I Learned 2021.07.10 - [HUFS/HUFS 모각코 캠프] - [모각코] 210710 Today I Learned 2021.07.14 - [HUFS/HUFS 모각코 캠프] - [모각코] 210714 Today I Learned 2021.07.17 - [HUFS/HUFS 모각코 캠프] - [모각코] 210717 Today I Learned 2021.07.22 - [HUFS/HUFS 모각코 캠프] - [모각코] 210721 Today I Learned 2021.07.24 - [HUFS/HUFS 모각코 캠프] - [모각코] 210724 Today I Learned 2021..
문제를 처음 봤을 때 이해가 가지 않아서 무슨 말인지 한참을 읽었다. 우선 50m마다 맥주를 마셔야 하고, 맥주는 20개 씩 들고 갈 수 있다는 말이 노드와 노드 사이의 거리가 1000m가 넘어서는 안된다는 뜻임을 캐치해야 했다. 그 후에는... 누가누가 코드로 잘 만들어내느냐.... dxdy기법 안 쓴 bfs 문제 오랜만이라 재밌고.. 어려웠다. import sys from collections import deque input = sys.stdin.readline def bfs(): q = deque() q.append([home[0], home[1]]) while q: x, y = q.popleft() if abs(x - fest[0]) + abs(y - fest[1])
오늘 왜 이리 졸렸지.. 모각코 하는 동안 제정신 아니었다.. 그래도 dfs 문제니까 일단 입력받고 dfs 기본 코드만 적었다. 다음에 다시 풀래... import sys input = sys.stdin.readline def dfs(x, y): global count count += 1 visited[x][y] = 1 dxdy = [(-1, 0), (1, 0), (0, -1), (0, 1)] for dx, dy in dxdy: new_x = x + dx new_y = y + dy if -1 < new_x < len(glac) and -1 < new_y < len(glac[0]): if not visited[new_x][new_y] and glac[new_x][new_y] !=0: dfs(new_x, n..
크루스칼 공부할 때 코드 외운다고 해놓고 안 외웠더니 오늘도 고생 좀 했다.. 그래도 크루스칼은 find, union함수만 외우면 나름 금방 풀리는 것 같다. 이번 문제는 테스트 케이스가 여러 개 주어지는 경우가 있다는 것을 캐치하는데 오래 걸렸다. 마지막 입력값에 0 0 을 왜 하나 싶었는데 다 그래서였구나....... import sys input = sys.stdin.readline def find(a): if a == parent[a]: return a parent[a] = find(parent[a]) return parent[a] def union(a, b): a = find(a) b = find(b) if a > b: parent[a] = b else: parent[b] = a while Tr..
세그먼트 트리 예제 공부하고 나서 푸니까 금방 풀렸다. 다른 문제들도 풀어보고 싶긴 한데 어차피 못 풀 것 같다... 너무 어려운 문제는 고르지 말아야지.. 이게 과연 푸는 의미가 있는가.... import sys input = sys.stdin.readline sys.setrecursionlimit(10**6) def init(start, end, index): if start == end: tree[index] = num[start] return tree[index] mid = (start + end) // 2 tree[index] = init(start, mid, index*2) + init(mid+1, end, index*2+1) return tree[index] def partial_sum(st..
코드트리에서 구현 한 문제 풀었다. 사실 두 문제 시도했는데 하나는 못 풀었다. ㅎㅎ 구현 왤케 어렵지..? 정해진 알고리즘이 있는 게 아니라 그냥 내 생각을 코드로 짜는 거라서 더 어려운 것 같다. 연습 많이 하면 이것도 늘겠지..? 늘어야 할텐데.. 문제 #최고의 33위치 https://www.codetree.ai/missions/2/concepts/2/problems/best-place-of-33/description 코드트리 삼성 SW역량테스트, 코드트리와 함께 www.codetree.ai 근데 나 사실 완전 어거지로 풀었다 ;; 이렇게 풀어도 되는 건가ㅋㅋㅋ 하도 안 풀려서 그냥 패스라도 받자.. 코드 더러운 건 신경쓰지 말자.. 했더니 이 사태가 났다. three에 하나하나 다 넣어준 것 봐 ..
ㅎ............ 벨만포드....... 모르겠어요......... 오늘 낮에 벨만포드 다른 문제 풀다가 안 풀려서 넘기고 이거 푼 건데 그 문제를 못 풀어서 그런가 이것도 못 풀겠다. 내 벨만포드 코드에 문제가 있나보다.. 뭐가 문제일까... 근데 이 문제는 테스트 케이스 여러 개 받아와야 해서 for문 안에서 모든 것을 처리해야 하는데 그걸 이해하는데 오래 걸렸다. 문제가 너무 길어서 읽기 싫게 생겼거든요.. 내일 다시 풀거나 다음 모각코 때 다시 풀어야지.... ㅠ import sys input = sys.stdin.readline def bf(start): dist[start] = 0 for i in range(1, n+1): for next, time in road[i]: if dist[i..
지난 주 초반에 풀다가 못 풀어서 포기한 문제인데 드디어 풀었다. 친구랑 같이 상의해 본 문제긴 한데 그래도 내 코드로 풀고 싶어서 계속 붙잡고 있다가.. ㅋㅋ 며칠 동안 계속 안 풀려서 그냥 친구 코드 참고했다. 내 기존 코드에서는 원산지 여부를 if문에 all() 함수를 사용해서 처리했다. 유향 그래프이므로 인접리스트에 해당 값이 요소로 들어가있지 않으면 원산지이기 때문. 근데 이 방식으로 했더니 원산지가 검거되어도 dfs는 계속 돌아가는 문제가 생겼다. 원산지가 검거되면 해당 원산지로부터 공급받는 곳을 dfs로 확인할 필요가 없다. 따라서 root 리스트를 만들어서 원산지 여부를 확인하고 원산지이고, 해당 노드를 방문하지 않은 경우에만 dfs를 돌려주었다. 이렇게 하면 두 원산지로부터 공급받는 노드..