코딩/백준 문제 (실버) 19

[백준/18352/파이썬] 특정 거리의 도시 찾기 _ 풀이

https://www.acmicpc.net/problem/18352 18352번: 특정 거리의 도시 찾기 첫째 줄에 도시의 개수 N, 도로의 개수 M, 거리 정보 K, 출발 도시의 번호 X가 주어진다. (2 ≤ N ≤ 300,000, 1 ≤ M ≤ 1,000,000, 1 ≤ K ≤ 300,000, 1 ≤ X ≤ N) 둘째 줄부터 M개의 줄에 걸쳐서 두 개 www.acmicpc.net 풀이 # 최단거리이므로 큐 자료구조 사용 from collections import deque # 도시수, 도로수, 거리, 출발도시번호 입력 n,m,k,x = map(int, input().split()) # 각 도시가 어느 도시와 이어져있는지 표시를 위해 2차원 리스트 graph = [[] for _ in range(n+1..

[백준/10828/C언어] 스택 _ 풀이

https://www.acmicpc.net/problem/10828 10828번: 스택 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 www.acmicpc.net 풀이 #include #include int main() { int n, x;// n= 명령횟수, x = push X의 X해당 char command[6];// 명령어 int stack[10001] = {};// 스택에 대한 배열 scanf("%d", &n);// 명령 횟수 입력 // i = 초기값, j = 인덱스값 int i = 0, j = -1; while (i < n) { ..

[백준/10773/C언어] 제로 _ 풀이

https://www.acmicpc.net/problem/10773 10773번: 제로 첫 번째 줄에 정수 K가 주어진다. (1 ≤ K ≤ 100,000) 이후 K개의 줄에 정수가 1개씩 주어진다. 정수는 0에서 1,000,000 사이의 값을 가지며, 정수가 "0" 일 경우에는 가장 최근에 쓴 수를 지우고, 아닐 경 www.acmicpc.net 풀이 #include #include int main() { int k, n; scanf("%d", &k); int* arr = (int*)malloc(k * sizeof(int)); int sum = 0; int c = 0; for (int i = 0; i < k; i++) { scanf("%d", &n);// n 입력 if (n != 0) {//n이 0이 아닐..

[백준/28278/C언어] 스택 2 _ 풀이

https://www.acmicpc.net/problem/28278 28278번: 스택 2 첫째 줄에 명령의 수 N이 주어진다. (1 ≤ N ≤ 1,000,000) 둘째 줄부터 N개 줄에 명령이 하나씩 주어진다. 출력을 요구하는 명령은 하나 이상 주어진다. www.acmicpc.net 풀이 #include int arr[1000000]; int main() { int commend, o, n;// 명령, 배열원소, 테스트케이스 scanf("%d", &n); int j = 0; for (int i = 0; i < n; i++) { scanf("%d", &commend); switch (commend) { case 1: scanf("%d", &o); arr[j] = o; j++; break; case 2: ..

[백준/11651/C언어] 좌표 정렬하기 2 _ 풀이

https://www.acmicpc.net/problem/11651 11651번: 좌표 정렬하기 2 첫째 줄에 점의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개의 줄에는 i번점의 위치 xi와 yi가 주어진다. (-100,000 ≤ xi, yi ≤ 100,000) 좌표는 항상 정수이고, 위치가 같은 두 점은 없다. www.acmicpc.net 풀이 #include #include // 구조체 변수 xy 선언 typedef struct{ int x; int y; } xy; // compare함수 선언 int compare(const void* first, const void* second); int main(){ int n; scanf("%d",&n); // cdn이라는 배열을 n..

[백준/1427/C언어] 소트인사이드 _ 풀이

https://www.acmicpc.net/problem/1427 풀이 #include int main() { int n; // n의값이 최대 10억이므로 자릿수는 최대 10자리 int arr[10]; scanf("%d", &n); int m = n; int i = 0; // m이 1이상일때 반복 while (m>=1) { // arr에 나머지를 할당(각 자릿수의 숫자) arr[i] = m % 10; // m을 뒤에서부터 한자리씩 줄인다 m = m / 10; i++; } int temp; // 선택정렬 for (int c = 0; c < i; c++) { for (int j = c; j < i; j++) { if (arr[c] < arr[j]) { temp = arr[c]; arr[c] = arr[j];..

[백준/2751/C언어] 수 정렬하기 2 _ 풀이

https://www.acmicpc.net/problem/2751 2751번: 수 정렬하기 2 첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 절댓값이 1,000,000보다 작거나 같은 정수이다. 수는 중복되지 않는다. www.acmicpc.net 풀이 #include #include // qsort 함수 int compare(const void* first, const void* second) { // first, second 포인터는 void형 이므로 // 리턴할 값의 int형으로 강제 형변환 int a = *(int*)first; int b = *(int*)second; // 오름차순이라면 -1 리턴값일때 변경 if (a <..

[백준/2839/C언어] 설탕 배달 _ 풀이

https://www.acmicpc.net/problem/2839 2839번: 설탕 배달 상근이는 요즘 설탕공장에서 설탕을 배달하고 있다. 상근이는 지금 사탕가게에 설탕을 정확하게 N킬로그램을 배달해야 한다. 설탕공장에서 만드는 설탕은 봉지에 담겨져 있다. 봉지는 3킬로그 www.acmicpc.net 풀이 #include int main() { int n; int cnt3 = 0;// 3키로 주머니 scanf("%d", &n); while (1) { // n이 5키로 주머니에 모두 담아질때 if(n%5==0){ // 5키로 주머니 + 3키로 주머니 개수 출력 printf("%d\n", n / 5 + cnt3); break; } // 5키로에 모두 담지 못한다면 else { // 3키로 주머니 +1 n =..

[백준/1436/C언어] 영화감독 숌 _ 풀이

https://www.acmicpc.net/problem/1436 1436번: 영화감독 숌 666은 종말을 나타내는 수라고 한다. 따라서, 많은 블록버스터 영화에서는 666이 들어간 제목을 많이 사용한다. 영화감독 숌은 세상의 종말 이라는 시리즈 영화의 감독이다. 조지 루카스는 스타워 www.acmicpc.net 풀이 #include int main() { int n; scanf("%d", &n); int x = 666; int ncnt = 0; while (1) { // 666 확인을 위해 x를 대신할 변수 int d = x; int ccnt = 0; // 연속적인 666이 있는지 확인 while (d!=0) { // 1의자리부터 6인지 확인 int c = d % 10; // 6이라면 ccnt++ if..

[백준/24313/C언어] 알고리즘 수업 - 점근적 표기 1 _ 풀이

https://www.acmicpc.net/problem/24313 24313번: 알고리즘 수업 - 점근적 표기 1 f(n) = 7n + 7, g(n) = n, c = 8, n0 = 1이다. f(1) = 14, c × g(1) = 8이므로 O(n) 정의를 만족하지 못한다. www.acmicpc.net 풀이 #include int main() { int a1, a; int c, n; scanf("%d %d %d %d", &a1, &a, &c, &n); if (a1 * n + a =a1) { printf("1\n"); } else printf("0\n"); return 0; } O(n)의 조건 1. a1 * n + a