본문 바로가기

전체 글50

1/27 [C] 백준 1158번 - 요세푸스 문제 https://www.acmicpc.net/problem/1158 1158번: 요세푸스 문제 첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 5,000) www.acmicpc.net #define _CRT_SECURE_NO_WARNINGS #include int main() { int n, k, i,j, cnt; int a[5002] = { 0 }; scanf("%d %d", &n, &k); printf(""); } 요세푸스 순열을 어떻게 구현하느냐에 대해서 시간을 많이 쏟았음. 현재 위치를 알려주는 변수 cnt를 선언해줌. 일단 제일 처음의 변수(k)는 먼저 출력해주고, 다른 변수들을 출력해줌. (혹은 다른 변수들을 출력하고 제일 나중의 변수를 출력해주는 방법도 있.. 2022. 1. 27.
1/27 [C] 백준 1037번 - 약수 https://www.acmicpc.net/problem/1037 1037번: 약수 첫째 줄에 N의 진짜 약수의 개수가 주어진다. 이 개수는 50보다 작거나 같은 자연수이다. 둘째 줄에는 N의 진짜 약수가 주어진다. 1,000,000보다 작거나 같고, 2보다 크거나 같은 자연수이고, 중복되 www.acmicpc.net #define _CRT_SECURE_NO_WARNINGS #include int main() { int n, i,j,temp, answer; int a[50]; scanf("%d", &n); for (i = 0; i < n; i++) { scanf("%d", &a[i]); } for (i = 0; i < n;i++) { for (j = 0; j < n - 1 - i; j++) { if (a.. 2022. 1. 27.
1/25 [C] 백준 1834번 - 나머지와 몫이 같은 수 https://www.acmicpc.net/problem/1834 1834번: 나머지와 몫이 같은 수 N으로 나누었을 때 나머지와 몫이 같은 모든 자연수의 합을 구하는 프로그램을 작성하시오. 예를 들어 N=3일 때, 나머지와 몫이 모두 같은 자연수는 4와 8 두 개가 있으므로, 그 합은 12이다. www.acmicpc.net #define _CRT_SECURE_NO_WARNINGS #include int main() { long long n; scanf("%lld", &n); printf("%lld", n*(n-1)*(n+1)/2); } 간단한 식을 찾아야 된다는 점이 첫번째, 수가 매우 커지기 때문에 long long형 정수를 써야한다는 점이 두번째 이 둘을 잘 고려하면서 문제를 풀어야 함. n=3일때.. 2022. 1. 25.
1/25 [C] 백준 1546번 - 평균 https://www.acmicpc.net/problem/1546 1546번: 평균 첫째 줄에 시험 본 과목의 개수 N이 주어진다. 이 값은 1000보다 작거나 같다. 둘째 줄에 세준이의 현재 성적이 주어진다. 이 값은 100보다 작거나 같은 음이 아닌 정수이고, 적어도 하나의 값은 0보 www.acmicpc.net #define _CRT_SECURE_NO_WARNINGS #include int main() { int score[1000]; int n, i, max = 0; double sum = 0; scanf("%d", &n); for (i = 0; i = max) max = score[i]; } for (i =.. 2022. 1. 25.
1/24 [C] 백준 1408번 - 24 https://www.acmicpc.net/problem/1408 1408번: 24 도현이는 Counter Terror Unit (CTU)에서 일하는 특수요원이다. 도현이는 모든 사건을 정확하게 24시간이 되는 순간 해결하는 것으로 유명하다. 도현이는 1시간 만에 범인을 잡을 수 있어도 잡지 않는 www.acmicpc.net #define _CRT_SECURE_NO_WARNINGS #include int main() { int nh, nm, ns; int sh, sm, ss; int a, b, c; int h, m, s; scanf("%d:%d:%d", &nh, &nm, &ns); scanf("%d:%d:%d", &sh, &sm, &ss); a = ns + nm * 60 + nh * 3600; b = s.. 2022. 1. 24.
1/24 [C] 백준 1357번 - 뒤집힌 덧셈 https://www.acmicpc.net/problem/1357 1357번: 뒤집힌 덧셈 어떤 수 X가 주어졌을 때, X의 모든 자리수가 역순이 된 수를 얻을 수 있다. Rev(X)를 X의 모든 자리수를 역순으로 만드는 함수라고 하자. 예를 들어, X=123일 때, Rev(X) = 321이다. 그리고, X=100일 때, Rev( www.acmicpc.net #define _CRT_SECURE_NO_WARNINGS #include int reverse(int x) { int j,i; for (j = 0, i = 1; x / i != 0; i *= 10) { j = j * 10 + (x % (i * 10) / i); } return j; } int main() { int x,y; int i,j,k,l; s.. 2022. 1. 24.
1/21 [C] 백준 1236번 - 성지키기 https://www.acmicpc.net/problem/1236 1236번: 성 지키기 첫째 줄에 성의 세로 크기 N과 가로 크기 M이 주어진다. N과 M은 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에는 성의 상태가 주어진다. 성의 상태는 .은 빈칸, X는 경비원이 있는 칸이다 www.acmicpc.net #define _CRT_SECURE_NO_WARNINGS #include int main() { int s[50][50]; char c; int n, m, cn = 0, cm = 0; int i, j, sum = 0; scanf("%d %d", &n, &m); for (i = 0; i < n; i++) { for (j = 0; j < m; j++) { scanf(" %c", &c); i.. 2022. 1. 24.
1/20 [C] 백준 1427번 - 소트인사이드 https://www.acmicpc.net/problem/1427 1427번: 소트인사이드 첫째 줄에 정렬하려고 하는 수 N이 주어진다. N은 1,000,000,000보다 작거나 같은 자연수이다. www.acmicpc.net #define _CRT_SECURE_NO_WARNINGS #include int main() { char num[11]; int i,j,cnt=0; char temp; scanf("%s", &num); for (i = 0; num[i] != '\0'; i++) cnt++; for (i = 0; i < cnt; i++) { for (j = 0; j < cnt - 1 - i; j++) { if (num[j] < num[j + 1]) { temp = num[j]; num[j] = num[.. 2022. 1. 24.
1/19 [C] 백준 1110번 - 더하기 사이클 https://www.acmicpc.net/problem/1110 1110번: 더하기 사이클 0보다 크거나 같고, 99보다 작거나 같은 정수가 주어질 때 다음과 같은 연산을 할 수 있다. 먼저 주어진 수가 10보다 작다면 앞에 0을 붙여 두 자리 수로 만들고, 각 자리의 숫자를 더한다. 그 다음, www.acmicpc.net #define _CRT_SECURE_NO_WARNINGS #include int main() { int std,n=0,a,b,cnt=0; scanf("%d", &std); n = std; do { a = n / 10; b = n % 10; n = b * 10 + ((a + b) % 10); cnt++; } while (std != n); printf("%d", cnt); } do w.. 2022. 1. 24.
1/19 [C] 백준 1373번 - 2진수 8진수 https://www.acmicpc.net/problem/1373 1373번: 2진수 8진수 첫째 줄에 2진수가 주어진다. 주어지는 수의 길이는 1,000,000을 넘지 않는다. www.acmicpc.net #define _CRT_SECURE_NO_WARNINGS #include int main() { char s[1000001]; char c; int len=0, out=0,i=0; scanf("%s", &s); for (len = 0; s[len] != '\0'; len++); if (len % 3 == 2) { printf("%d", ((s[0]-'0') * 2) + (s[1]-'0')); } else if (len % 3 == 1) { printf("%d", (s[0]-'0')); } for (i.. 2022. 1. 24.