파이썬
-
알고리즘: 백준 2606번 바이러스 (feat.python)알고리즘/백준(BaekJoon) 2021. 1. 4. 23:28
2606번: 바이러스 첫째 줄에는 컴퓨터의 수가 주어진다. 컴퓨터의 수는 100 이하이고 각 컴퓨터에는 1번 부터 차례대로 번호가 매겨진다. 둘째 줄에는 네트워크 상에서 직접 연결되어 있는 컴퓨터 쌍의 수가 주어 www.acmicpc.net import sys read = sys.stdin.readline def bfs(start, dic): queue = [start] while(queue): pop = queue.pop(0) for i in dic[pop]: if i not in visited: visited.append(i) queue.append(i) def dfs(start, dic): for i in dic[start]: if i not in visited: visited.append(i) d..
-
알고리즘: 백준 1015번 수열 정렬 (feat.python)알고리즘/백준(BaekJoon) 2020. 12. 30. 19:35
1015번: 수열 정렬 P[0], P[1], ...., P[N-1]은 0부터 N-1까지(포함)의 수를 한 번씩 포함하고 있는 수열이다. 수열 P를 길이가 N인 배열 A에 적용하면 길이가 N인 배열 B가 된다. 적용하는 방법은 B[P[i]] = A[i]이다. 배열 A가 주 www.acmicpc.net import sys input = sys.stdin.readline n = int(input()) getA = list(map(int, input().split())) listA = list() for i in range(n): listA.append([i, getA[i]]) listA = sorted(listA, key=lambda x:x[1]) for i in range(n): listA[i][1] = i..
-
알고리즘: 백준 1002번 터렛 (feat. python)알고리즘/백준(BaekJoon) 2020. 12. 30. 18:20
1002번: 터렛 각 테스트 케이스마다 류재명이 있을 수 있는 위치의 수를 출력한다. 만약 류재명이 있을 수 있는 위치의 개수가 무한대일 경우에는 -1을 출력한다. www.acmicpc.net import sys input = sys.stdin.readline n = int(input()) for i in range(n): x1, y1, a, x2, y2, b = (map(int, input().split())) dis = ((x1-x2)**2 + (y1-y2)**2)**(1/2) r1 = a if a>b else b r2 = a if a
-
머신러닝: 파이썬 Pytorch 사용하기!머신러닝 2020. 11. 9. 19:05
1. torch.rand(a, b) : 0 ~ 1사이의 값을 갖는 a x b 텐서생성 import torch x = torch.rand(5, 3) x tensor([[0.2107, 0.1415, 0.2014], [0.3747, 0.4420, 0.9662], [0.8733, 0.0158, 0.6805], [0.8282, 0.7829, 0.2063], [0.9674, 0.3998, 0.0489]]) tensor형태로 출력 2. tensor 값 지정해주기 x = torch.tensor([[0,1,1,2], [2,2,3,1]]) x tensor([[0, 1, 1, 2], [2, 2, 3, 1]]) 3. torch.zeros(a, b) : 0 값을 가진 a x b의 tensor 생성 torch.ones(a, b)..
-
알고리즘: 백준 2565번 전깃줄 (feat. c++) 최장증가수열문제(LIS)알고리즘 2020. 8. 31. 22:41
백준 2565번 문제입니다. 2565번: 전깃줄 첫째 줄에는 두 전봇대 사이의 전깃줄의 개수가 주어진다. 전깃줄의 개수는 100 이하의 자연수이다. 둘째 줄부터 한 줄에 하나씩 전깃줄이 A전봇대와 연결되는 위치의 번호와 B전봇대와 연결되는 www.acmicpc.net 좀 꼬아놓은 최장증가 수열 문제 (사실 최장증가수열문제는 처음 접해보았다...) 처음에는 파이썬으로 스택을 이용해서 풀었지만 무슨 이유인지 틀렸다고 나왔다... (틀린 코드) n = int(input()) line_list = [] for i in range(n): line_list.append(list(map(int, input().split()))) del_count = 0 while True: cross = [] for i in ran..
-
알고리즘: 백준 11048번 이동하기 (feat. python)알고리즘/백준(BaekJoon) 2020. 8. 27. 22:42
백준 11048번 링크입니다. 11048번: 이동하기 준규는 N×M 크기의 미로에 갇혀있다. 미로는 1×1크기의 방으로 나누어져 있고, 각 방에는 사탕이 놓여져 있다. 미로의 가장 왼쪽 윗 방은 (1, 1)이고, 가장 오른쪽 아랫 방은 (N, M)이다. 준규는 �� www.acmicpc.net DFS 인줄 알았지만 시간초과가 나길래 다시 보니 다이나믹프로그래밍이였던 문제 dp를 이차원 리스트로 만들어서 dp[N][M] = (N, M)까지 오기까지의 합이라고 한다면 dp[N][M] = max(dp[N - 1][M], dp[N][M - 1], dp[N - 1][M - 1]) + maze[N][M] 라고 할 수 있다. import sys input = sys.stdin.readline N, M = map(in..
-
알고리즘: 백준 14888번 연산자 끼워넣기(feat. python)알고리즘/백준(BaekJoon) 2020. 8. 24. 22:08
백준 14888번 링크입니다. 14888번: 연산자 끼워넣기 첫째 줄에 수의 개수 N(2 ≤ N ≤ 11)가 주어진다. 둘째 줄에는 A1, A2, ..., AN이 주어진다. (1 ≤ Ai ≤ 100) 셋째 줄에는 합이 N-1인 4개의 정수가 주어지는데, 차례대로 덧셈(+)의 개수, 뺄셈(-)의 개수, �� www.acmicpc.net 이렇게 열심히 풀긴 했지만 결국 틀렸다... 하지만 이 문제 하나로 여러가지 경험을 한 것 같아서 만족한다. permutation이라는 편리한 모듈을 알게 되었고 stack과 dfs에 대해서 좀 더 깊게 알 수 있었다. permutation을 통해서 가능한 연산자순서의 경우의 수를 구했고 stack을 통해 필요한 값을 넣고 뺌으로써 원하는 값을 구하는 방법을 체득하였다. i..
-
알고리즘: 백준 11057번 오르막 수 (feat. c++)알고리즘/백준(BaekJoon) 2020. 8. 24. 11:45
백준 11057 링크입니다. 11057번: 오르막 수 오르막 수는 수의 자리가 오름차순을 이루는 수를 말한다. 이때, 인접한 수가 같아도 오름차순으로 친다. 예를 들어, 2234와 3678, 11119는 오르막 수이지만, 2232, 3676, 91111은 오르막 수가 아니다. 수� www.acmicpc.net 다이나믹 프로그래밍을 이용하면 쉽지만 어떤 구조를 이용하면 좋을지가 가장 어렵다. dp를 이차원리스트로 해서 dp[i][j] = 길이가 i인 끝자리수가 j인 오르막 수 라고 하면 쉽게 해결할 수 있다. (끝자리수를 기준으로 나누는게 포인트) i는 1 ~ 1000 j는 0 ~ 9까지 가능하다 예를 들어 dp[2][3]을 구한다고 하면 dp[2][3] = dp[1][2] + dp[1][1] + dp[1..