분류 전체보기 507

[Python] 백준 1926 그림 - bfs알고리즘

참고 : https://www.youtube.com/watch?v=ansd5B27uJM from collections import deque import sys input = sys.stdin.readline # 세로, 가로 n,m = map(int, input().split()) map = [list(map(int, input().split())) for _ in range(n)] # 방문횟수 - 가로m개인 false리스트가 세로로 n개 있어야함 chk = [[False]*m for _ in range(n)] # dy, dx는 그냥 외우기 - 좌표 이동에 사용됨 dy = [0,1,0,-1] dx = [1,0,-1,0] def bfs(y, x) : rs = 1 q = deque() q.append((y,..

[Python] 지그재그로 숫자 채우기 (이중배열)

출처 : 코드트리 n * m크기의 직사각형에 숫자를 0부터 순서대로 1씩 증가시키며 왼쪽 위에서부터 시작하여 다음과 같이 지그재그 모양으로 숫자들을 쭉 채우는 코드를 작성해보세요. import sys a, b = map(int,sys.stdin.readline().split()) # 행, 열 buf = [[0]*b for _ in range(a)] count=0 for col in range(b): # 열 if col % 2 == 0: # 짝수열이면 for row in range(a): buf[row][col] = count count += 1 else: # 홀수열이면 for row in range(a-1, -1, -1): # 0~n-1까지 역순으로 buf[row][col] = count count+=1..

[Python] 백준 13458 시험 감독

www.acmicpc.net/problem/13458 13458번: 시험 감독 첫째 줄에 시험장의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 각 시험장에 있는 응시자의 수 Ai (1 ≤ Ai ≤ 1,000,000)가 주어진다. 셋째 줄에는 B와 C가 주어진다. (1 ≤ B, C ≤ 1,000,000) www.acmicpc.net n=int(input()) a=list(map(int,input().split())) b,c=map(int,input().split()) # n-시험장개수 a-응시자의수 b-총감독관감시 c-부감독관감시 need=n for p in a: p=max(p-b,0) if p==0: pass else: if p%c==0: need+=p//c else: need+=..

[C++] 백준 2178 미로탐색-dfs알고리즘-최단경로

#include #include #define MAX 101 using namespace std; int N, M; // 미로 크기 int maze[MAX][MAX]; // 미로 표현용 2차원 배열 int visited[MAX][MAX]; // 방문 기록용 2차원 배열 int dist[MAX][MAX]; // 이동칸 기록용 2차원 배열 int x_dir[4] = {-1, 1, 0, 0}; // 상화좌우 x축 방향 int y_dir[4] = {0, 0, -1, 1}; // 상화좌우 y축 방향 queue q; // 탐색 좌표 저장용 queue // 미로 경로 탐색 void bfs(int start_x, int start_y){ visited[start_x][start_y] = 1; // 입력 받은 시작 좌표..

[c++] 백준2232 벌집 c++

백준 2292벌집 : https://www.acmicpc.net/problem/2292 2292번: 벌집 위의 그림과 같이 육각형으로 이루어진 벌집이 있다. 그림에서 보는 바와 같이 중앙의 방 1부터 시작해서 이웃하는 방에 돌아가면서 1씩 증가하는 번호를 주소로 매길 수 있다. 숫자 N이 주어졌 www.acmicpc.net #include using namespace std; int main() { int inp = 0; cin >> inp; int a = 1; int answer = 0; int b = 2; if (inp == 1) { cout

[C++] 백준 14567 선수과목 (설명 작성중~)

https://www.acmicpc.net/problem/14567 14567번: 선수과목 (Prerequisite) 3개의 과목이 있고, 2번 과목을 이수하기 위해서는 1번 과목을 이수해야 하고, 3번 과목을 이수하기 위해서는 2번 과목을 이수해야 한다. www.acmicpc.net #include #include #include #define MAX 1001 // 최대 노드 개수 using namespace std; int n, m, inDegree[MAX]; vector a[MAX]; int result[MAX]; void topologySort(){ queue q; // 진입차수가 0인 노드들 큐에 추가 for (int i=1;i y; a[x].push_back(y); inDegree[y]++; ..

[C++] 백준 2056 작업

https://www.acmicpc.net/problem/2056 2056번: 작업 수행해야 할 작업 N개 (3 ≤ N ≤ 10000)가 있다. 각각의 작업마다 걸리는 시간(1 ≤ 시간 ≤ 100)이 정수로 주어진다. 몇몇 작업들 사이에는 선행 관계라는 게 있어서, 어떤 작업을 수행하기 위해 www.acmicpc.net 깔끔코드 //작업 #include #include #include #define MAX 10001 // 최대 노드 개수 using namespace std; int n, inDegree[MAX]; vector a[MAX]; int result; int t[MAX]; int dp[MAX]; void topologySort(){ queue q; // 진입차수가 0이면 q에 삽입 for (in..

[Python] 백준 2559 수열 - 그리디 알고리즘

문제 : https://www.acmicpc.net/problem/11047 예제입력: 10 4200 1 5 10 50 100 500 1000 5000 10000 50000 예제출력: 6 import sys input = sys.stdin.readline N, K = map(int, input().split()) coins = [int(input()) for _ in range(N)] coins.reverse() re = 0 for coin in coins : re += K // coin K = K % coin print(re) - 오름차순으로 주어지는 동전을 리스트에 담고 reverse함수를 이용해 역순으로 정렬시킨다 - 정렬된 리스트내부를 순회하며 입력받은 돈을 순회한 값으로 나눈 몫을 result ..