목록프로그래밍/알고리즘 (24)
이것도 알아야 하네?
#include using namespace std; int cube[7] = {0}; int x, y; int offset_x[] = {0, 0, -1, 1}; // east west north south int offset_y[] = {1, -1, 0, 0}; int WithinRange(int x, int y, int N, int M) { if (x >= 0 && x = 0 && y < M) return 1; else return 0; } void Solve(int * graph, int dir, int N, int M) { int next_x, next_y; switch(dir) { case 0: // east; next_x = x + offset_x[dir]; next_y = ..
#include #include using namespace std; int offset_r[4] = {0, 1, 0, -1}; int offset_c[4] = {1, 0, -1, 0}; int Max(int a, int b) { return a > b ? a : b; } int result; int WithinRange(int r, int c, int N, int M) { if (r = 0 && c >= 0) return 1; else return 0; } void Solve(int *graph, int *visit, int r, int c, int N, int M, int cnt, int _sum) { visit[r * M + c] = 1; if(cnt + 1 == ..
풀이 progresses에 speed를 더해서 하루하루 지난다고 생각하고 그 당일 날 새 100이 넘은 얘들까지 수를 세아려 answer에 넣어줍니다. 주의할 점은 지난 배포에 포함한 부분까지를 표시해주어서, 100이 넘는 일들 중 지난 배포까지 포함된 부분을 빼줘야지만 이번에 새로 100이 넘는 부분만 남는다는 것입니다. 저는 이렇게 풀었지만 많은 분들이 day = (99 - progresses[i]) / speeds[i] + 1; 로 해당 progesses가 100이 넘는 기간을 미리 구해서 문제를 풀었더라구요, 저도 객관적으로 보면 그 부분이 for문을 돌지 않고 빨리 구하는 방법이라고 생각합니다 :-) 전체 성공 코드 #include #include using namespace std; vecto..
풀이 방법 해당 문제는 동적 계획법으로 풀었지만, 동적 계획법으로 푸는 문제 중 난이도가 높은 문제는 아닙니다. 지나온 땅의 합을 저장하기 위해 땅의 크기와 동일한 2D vector를 선언합니다. programmers에서 제공하는 알고리즘 문제 풀이에서는 해당 부분을 2D array 형태로 선언헀지만, array로 필요한만큼만 선언하려면 동적할당을 사용해야하는데, 귀찮아서 vector 형태로 선언했습니다. 해당 2D vector를 A라고 할때 A[i][j]에는 land[i][j]까지 오는 방법 중 지나온 숫자의 합이 가장 큰 값을 저장합니다. 이 때 가장 큰 값을 구하는 방법은 A[i-1] 중 A[i-1][j]를 제외한 가장 큰 값과 land[i][j]를 더하는 것입니다. 코드는 아래 전체 성공 코드를 ..
문제 LIST 1. 동물 농장에는 동물이 몇마리? from animal import * sheep = animals.count("메에에") chicken = animals.count("꼬끼오") dog = animals.count("크르릉") print(sheep, chicken, dog) 2. 절사평균을 구해봅시다! def myMean(my_list): return (sum(my_list) - max(my_list) - min(my_list)) / (len(my_list) - 2) 3. 어머님은 저만 믿으시면 됩니다. 삐릿삐릿 def skyCastle(my_list): my_dict = {"에릭": 1, "김동완": 2, "전진": 3, "이민우": 4, "앤디":5} return [my_dict[it..
문제 LIST 1. Who needs Python? s = input() print("Life is short, {} need Python!".format(s)) 2. 마천루 N = int(input()) for i in range(N): if i < 5: print('*' * (i + 1)) else: print('*' * 5) 3. 3, 6, 9! num = int(input()) if ((num+1) % 3 == 0: print("짝") else: print(num + 1) 4. 수타박수 num = int(input()) sum_ = 0 coffee = {'아메리카노': 4100, '카페라떼': 4600, '카라멜마끼아또': 5100} for i in range(num): coffee_name = ..