Koala - 15기

문제 풀이아이디어 문제이다.천진수를 이용하여 [1,1,1,1, ..., 1000,1000,1000, ... ,1000]이라는 수열을 고안한다. (1과 1000은 각각 1000개씩 있다.)위 수열은 연속한 범위의 합으로 1,000,000까지의 모든 숫자를 만들 수 있다. 코드print(2000) arr = [1 for i in range(1000)] + [1000 for _ in range(1000)] for i in arr:     print(i, end=' ')
https://www.acmicpc.net/problem/4963문제 풀이1. r과 c를 입력받기 + 0 0 을 입력받는 순간 탈출\2. arr 리스트에 섬의 상황 입력하기3. 비교를 위한 check 리스트 생성4. arr 전체를 돌며 flood_fill 함수 실행5. flood_fill 함수가 끝나면 섬 1개를 의미하므로 cnt 1 증가flood_fill 함수대각선까지 감안하여야 하므로 x,y에 더해줄 d 생성함수의 인자인 x,y에 맞는 nx, ny에 맞게 수정 -> 추가 flood_fill 실행 문제 코드def flood_fill(x, y): for i in range(len(d)): nx, ny = x + d[i][0], y + d[i][1] if 0
https://www.acmicpc.net/problem/1002문제문제풀이1. 터렛 두 개의 x, y 좌표를 비교하여 변수 선언한다2. 좌표를 비교하여 두 개의 원을 설정한다3. 중심거리와 위치의 관계를 이용하여 두 원의  접점의 개수를 구한다.코드
https://www.acmicpc.net/problem/10974문제풀이숫자 N을 입력받아 1부터 N까지의 수로 이루어진 리스트를 만든다. 그리고 순열 모듈을 통하여 리스트에 있는 수들의 순열을 구한다.소스코드from itertools import permutations as pmN = int(input())arr = [i for i in range(1, N+1)]for t in pm(arr, N): print(' '.join(map(str, t)))
문제&링크https://www.acmicpc.net/problem/1238 풀이1. 각자 마을 별로 특정 마을까지 갔다가 오는 최소 거리를 계산해야 하기에, 다익스트라 알고리즘을 사용한다.2. 시작점과 끝점 가중치가 주어져 있기에 끝점과 가중치를 pair로 하는 벡터 행렬에 시작점을 기준으로 저장한다.3. 다익스트라 함수에서 시작점과 끝점을 파라미터로 받는다.4. fill 함수를 이용해서 모든 거리를 INF로 초기화한다.5. 우선순위 큐를 활용하여 가중치가 가장 낮은 값 먼저 탐색하도록 한다. 이때 우선순위 큐는 기본적으로 max heap 이기에 가중치를 음수로 하여 저장하고, 값을 사용할 때는 -를 붙여 양수로 사용한다.6. 시작점 s의 가중치를 0으로 초기화한 후 우선순위 큐에 삽입하고, 거리 또한 ..
문제https://www.acmicpc.net/problem/17413코드#include #include #include #includeusing namespace std;int main(){ string s; getline(cin, s); int intag = 0; string ans = ""; string word = ""; for (int i = 0; i ') { ans += s[i]; intag = 0; } //숫자나 알파벳 else { if (intag == 1) { ans += s[i]; } else { word = s[i] + word; } } } ans += word; cout 알고리즘 분류 : 구현문제 해설 : 태그 안일 때는 체크해주면서 문..
https://www.acmicpc.net/problem/1940 문제재료의 수 N(1 풀이고유한 수를 정렬한 후, 이중 반복문으로 두 수를 더해서 m이 되는 경우의 수를 센다. 이때, 안쪽 루프가 i+1부터 시작하므로, n*2보다는 적은 연산을 한다.#include #include using namespace std;int n, m, arr[15010], cnt = 0;int main() { cin >> n >> m; for (int i = 0; i > arr[i]; sort(arr, arr + n); for (int i = 0; i
https://www.acmicpc.net/problem/11866알고리즘 분류구현 자료구조큐n, k = map(int, input().split())n_lst = list(range(1, n+1))ans = []i = k-1while n_lst: ans.append(n_lst.pop(i)) if i == len(n_lst): i = 0 for _ in range(k-1): i += 1 if i == len(n_lst): i = 0print('')문제풀이 1부터 n까지 들어있는 리스트가 모두 사라질때까지 반복index = i 인 수를 pop()하고 정답 리스트에 append()pop()을 통해 이후 인덱스가 1씩 줄었으므로  이후 k번째 수를 제거하기 위해 i에 ..
문제풀이문자열을 입력받고 아스키 코드로 점수의 합을 구한다.띄어쓰기는 무시해야 하므로 띄어쓰기 범위의 아스키코드를 무시하도록 범위를 설정한다.코드
https://www.acmicpc.net/problem/1854문제봄캠프를 마친 김진영 조교는 여러 도시를 돌며 여행을 다닐 계획이다. 그런데 김 조교는, '느림의 미학'을 중요시하는 사람이라 항상 최단경로로만 이동하는 것은 별로 좋아하지 않는다. 하지만 너무 시간이 오래 걸리는 경로도 그리 매력적인 것만은 아니어서, 적당한 타협안인 'k번째 최단경로'를 구하길 원한다. 그를 돕기 위한 프로그램을 작성해 보자.입력첫째 줄에 n, m, k가 주어진다. (1 ≤ n ≤ 1,000, 0 ≤ m ≤ 250,000, 1 ≤ k ≤ 100, mk ≤ 3,000,000)  n과 m은 각각 김 조교가 여행을 고려하고 있는 도시들의 개수와, 도시 간에 존재하는 도로의 수이다. 이어지는 m개의 줄에는 각각 도로의 정보를..
5972번: 택배 배송 (acmicpc.net)노드와 비용을 입력받고 최소 비용이 되는 길로 가야겠다import sysinput = sys.stdin.readlinesys.setrecursionlimit(10**6)import heapqn,m=map(int,input().split()) graph=[[] for _ in range(n+1)]for _ in range(m): a,b,c=map(int,input().split()) graph[a].append((b,c)) graph[b].append((a,c))INF=int(1e9)dist=[INF]*(n+1) def dijkstra(start): visit=[] q=[] heapq.heappush(q,(0, start)) ..
풀이#include #include #include #include using namespace std;int N, M;int dist[1001];vector> v[1001];int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); cin >> N >> M; while(M--) { int s, e, c; cin >> s >> e >> c; v[s].push_back({e, c}); } int start, end; cin >> start >> end; memset(dist, 127, sizeof(dist)); dist[start] = ..
KauKoala
'Koala - 15기' 카테고리의 글 목록