일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Planned
- Bellman-Ford
- 최소스패닝트리
- MyPlaylist
- 프로그래머스
- 실습
- SQL
- codetree
- Kruskal
- 동적계획법
- 장고
- 모각코
- 알고리즘
- programmers
- 백트래킹
- 파이썬
- 백준
- 소프트웨어공학
- B대면노래방
- DP
- BFS
- 종합설계
- minimum spanning tree
- 그리디알고리즘
- 코드트리
- 함밥
- django
- 마라마라빔
- 데이터베이스
- DFS
- Today
- Total
목록전체 글 (242)
Leta Learns
문제 https://www.acmicpc.net/problem/9205 9205번: 맥주 마시면서 걸어가기 송도에 사는 상근이와 친구들은 송도에서 열리는 펜타포트 락 페스티벌에 가려고 한다. 올해는 맥주를 마시면서 걸어가기로 했다. 출발은 상근이네 집에서 하고, 맥주 한 박스를 들고 출발한다. www.acmicpc.net 박스에 맥주를 최대 20개 까지 담을 수 있고, 50m에 맥주 한 병씩을 마셔야 한다. => 노드들 간의 거리가 1000m를 넘어서는 안 된다. 문제가 복잡해보이게 적혀있어서 그렇지 이것만 이해하면 나름 괜찮았던 것 같다. 입력 받는 부분에서 1차로 막혔었는데 편의점이 n개라서 for문을 n+2로 돌려서 입력값 전체를 다 받으려고 했었다. 다시 보니까 편의점 n개만 for문으로 돌리고 ..
문제를 처음 봤을 때 이해가 가지 않아서 무슨 말인지 한참을 읽었다. 우선 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..
문제 https://www.acmicpc.net/problem/6497 6497번: 전력난 성진이는 한 도시의 시장인데 거지라서 전력난에 끙끙댄다. 그래서 모든 길마다 원래 켜져 있던 가로등 중 일부를 소등하기로 하였다. 길의 가로등을 켜 두면 하루에 길의 미터 수만큼 돈이 들 www.acmicpc.net 스터디할 때는 크루스칼 어려웠는데 지금은 할 만하다. 문제 해결에 필요한 로직대로만 조금 수정하고 find, union 함수 사용하면 돼서 금방 익숙해진 것 같다. MST 어려워서 겁먹었었는데 이제는 좀 더 마음 놓고 시도해도 될 것 같다. import sys input = sys.stdin.readline def find(a): if a == parent[a]: return a parent[a] = ..
문제 https://www.acmicpc.net/problem/1012 1012번: 유기농 배추 차세대 영농인 한나는 강원도 고랭지에서 유기농 배추를 재배하기로 하였다. 농약을 쓰지 않고 배추를 재배하려면 배추를 해충으로부터 보호하는 것이 중요하기 때문에, 한나는 해충 방지에 www.acmicpc.net 확실히 여러 번 푸니까 이제는 문제 접근법이 비교적 쉽게 생각난다. 물론 실버인 것도 한 몫했겠지만... ㅋㅋㅋ 보통 m=row, n=col으로 하는데 여기서는 m=col, n=row여서 헷갈렸다. 그것때문에 배열 인덱스를 몇 번이나 바꿔서 재실행했는지 모르겠다. ㅠㅠ 그 부분 빼고는 무난한 문제였다고 생각한다. import sys input = sys.stdin.readline from collecti..
크루스칼 공부할 때 코드 외운다고 해놓고 안 외웠더니 오늘도 고생 좀 했다.. 그래도 크루스칼은 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..
문제 https://www.acmicpc.net/problem/2667 2667번: 단지번호붙이기 과 같이 정사각형 모양의 지도가 있다. 1은 집이 있는 곳을, 0은 집이 없는 곳을 나타낸다. 철수는 이 지도를 가지고 연결된 집의 모임인 단지를 정의하고, 단지에 번호를 붙이려 한다. 여 www.acmicpc.net 아 한 번에 푼 문제 완전 오랜만이라 신난다. bfs로 풀 수 있는 문제인데 그러면 기존에 푼 dxdy 문제랑 코드가 같아서 dfs로 풀었다. 뭐 물론.. 큰 차이는 없다. 그냥 deque를 안 쓴 것 뿐.. ㅋㅋㅋㅋ input 0110100을 받는다고 가정했을 때, 이를 개별 int로 받는 과정을 생각하는 게 어려웠다. list(map(int, input().split()))으로 했더니 그냥..
자바스크립트 문법 : 표준화된 스크립트 프로그래밍 언어인 ECMAScript를 따른다. ECMAScript는 매년 조금씩 변경되고, ES6(2015)를 기준으로 많이 변경되었다. ex) 변수 선언 후 두 수의 값 더하기 #ES5 var a = 10; var b = 10; function sum(x, y) { return x + y; } sum(a, b); // 20 var 키워드를 사용하여 변수 선언. ES6으로 넘어가면서 var의 단점을 보완하고자 let과 const로 세분화 되었다. #ES6 let name = 'javascript'; console.log(name); // javascript (console.log: 파이썬의 print와 같은 역할) name = 'react'; console.log..
#subproblem을 그대로 합치면 되는 DP - 피보나치 수 https://www.codetree.ai/missions/2/concepts/6/problems/fibonacci-number/description 코드트리 삼성 SW역량테스트, 코드트리와 함께 www.codetree.ai n = int(input()) def fibonacci(n): if n = coin[j-1]: dp[i] = min(dp[i], dp[i - coin[j-1]] + 1) if dp[m] == float('inf'): print(-1) else: print(dp[m]) 아 이 문제는 너무 어려웠다.. 해설 다시 보면서 공부 더 해야 할 것 같다... DP 점화식 고안하는 거 너무 어렵다.. 전에는 그래프가 더 어렵다고 생..
세그먼트 트리 예제 공부하고 나서 푸니까 금방 풀렸다. 다른 문제들도 풀어보고 싶긴 한데 어차피 못 풀 것 같다... 너무 어려운 문제는 고르지 말아야지.. 이게 과연 푸는 의미가 있는가.... 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..