본문 바로가기

Algorithm

(42)
[백준] 카드 역배치 10804 C++ https://www.acmicpc.net/problem/10804 12345678910111213141516171819202122232425262728293031323334353637#include #include using namespace std; int main(){ ios::sync_with_stdio(false); cin.tie(NULL); vector v; int array1[21] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20}; int A, B; int temp; for (int cnt = 0; cnt > A >> B; for (int i = A; i
최소신장트리 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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 parent = {} rank = {} # 정점을 독립적인 집합으로 만든다. def make_set(v): parent[v] = v rank[v] = 0 # 해당 정점의 최상위 정점을 찾는다. def find(v): if parent[v] != v: parent[v] = find(pare..
[백준] 치킨배달 15686 (브루트포스) Python 집 리스트, 치킨집 리스트를 구하고 주어진 M(도시에 있을 수 있는 최대의 치킨집 수)에 따라 치킨집을 조합한다. 조합된 치킨집 리스트에 따라 각 집별의 치킨거리를 구한다. (각 조합별의 치킨거리의 합) 조합별 집과의 치킨거리의 합을 구한 것 중 최소 값을 구한다. 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 import itertools n,m = map(int, input().strip().split()) lists = [] home = [] chicken = [] for i in range(n): lists.append(list(map(int, input().strip().split()))) for i i..
[백준] 미로 탐색 2178 Python (BFS) 포인트: 인접한 네 방향(좌우상하)에 0이 아닌 값이면 차례대로 증가된 값을 리스트에 저장 조건 - 배열의 범위를 넘으면 안됨 - 방문한(0이 아닌 값이 기입되어 있으면)칸이면 값을 저장하지 않음 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 n, m = map(int, input().strip().split()) queue = [[0,0]] lists = [] for i in range(n): lists.append(list(map(int, input()))) visited = [[0]*m for _ in range(n)] visited[0][0] = 1 dx = [-1, 0, 1, 0] dy = [0, 1, 0, ..
[백준] 주사위 굴리기 14499 (시뮬레이션) Python 주사위를 굴리는데, 벗어나려고 하면 동작하면 안됨 벗어나려고 하지 않는 조건일 경우에만 굴리어 네 방향 (동, 서, 남, 북)에 따른 주사위의 값을 변경한다. 아래의 소스같은 경우는 벗어나지 않는 경우를 네 방향의 연산을 할 때와 네 방향중 어디라도 이동이 가능해서 굴렸다면 지도의 칸과의 비교과정 그리고 출력이 가능하도록 하였다.(chk 변수) 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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 m = [0, 0, 0, 0, 0..
[백준] 시험감독 13458(구현) 처음에 cnts라는 list에 N의 크기만큼 2차원배열을 만들어 각 인덱스를 1로 초기화하고 각 인덱스의 값에 더하고 마지막 sum을 통해 구현하였더니 시간초과가 났다. 처음 문제를 풀기 위해 설계 단계에서 cnts = N 이것과 두번째로는 위에 방식을 통한 것을 생각하고 2번째방식으로 구현했었다. 이후 처음에 생각한 것 처럼 하였더니 가볍게 문제가 풀렸다. 아마도 리스트를 생성하는 시간(입력 N)만큼 더 수행하고 해당 i가 A리스트에 어느 인덱스인지 서치하고, sum으로 각 계산하는 연산이 추가적으로 들어 시간초과가 된 것으로 생각한다. 굳이 리스트를 쓸 필요 없다면 리스트 만들지 말자. 그리고 시간초과가 났다면 불필요한 작업을 했던것에 대해 대비책을 생각하고 디버깅해야 할 것 같다. 단순하게 최소 N..
[백준] 나이순 정렬 10814 Python 1 2 3 4 5 6 7 8 9 10 n = int(input()) lists = [] for i in range(n): lists.append(list(map(str, input().strip().split()))) lists[i][0] = int(lists[i][0]) lists.sort(key= lambda x:x[0]) # 0 인덱스를 오름차순으로, 만약 내림차순으로 하고 싶다면 -를 붙인다. / 그리고 0 인덱스가 동일하고 1을 내림으로 하고 싶다면 x:(x[0],-x[1]) for i in lists: print(i[0], i[1])
[백준] 방학 숙제 5532 Python (정렬) 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 ''' 방학 총일, 국어 총 페이지, 수학 총 페이지, 하루 최대 국어, 하루 최대 수학 ''' cnt1 = 1 cnt2 = 1 lists = [] for i in range(5): lists.append(int(input())) temp1 = lists[3] temp2 = lists[4] while lists[1] > lists[3]: cnt1 += 1 lists[3] += temp1 while lists[2] > lists[4]: cnt2 += 1 lists[4] += temp2 # print("cnt1: ", cnt1, "lists[3]: ", lists[3]) # print(..