C언어(64)
-
1158: 요세푸스 문제
자료구조 실버 4 https://www.acmicpc.net/problem/1158 1158번: 요세푸스 문제 첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 5,000) www.acmicpc.net -결과 -코드 #include int main() { int N, K, check[5002] = {0, }, cur; scanf("%d %d", &N, &K); cur = K; printf(""); } -풀이 k번째 사람을 제거한 후 제거되는 사람의 순서를 출력하면 되기 때문에 먼저 번호를 k로 고정해야 한다. 먼저 for문으로 n개의 번호가 제거될 때까지 반복되게 한다. 그 이후 다시 안쪽에 for문을 이용하여 k개의 번호를 지나면 제거하도록 반복문을 작성한다. 미리 ..
2022.09.24 -
10815: 숫자 카드
자료구조 실버5 https://www.acmicpc.net/problem/10815 10815번: 숫자 카드 첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드에 적혀있는 수는 -10,000,000보다 크거나 같고, 10, www.acmicpc.net -결과 -코드 #include #include int bin_search(const int a[], int n, int key) { int pl = 0; int pr = n - 1; int pc; do { pc = (pl + pr) / 2; if (a[pc] == key) { return 1; } else if (a[pc] < key) { pl = p..
2022.09.24 -
1550: 16진수
https://www.acmicpc.net/problem/1550 1550번: 16진수 첫째 줄에 16진수 수가 주어진다. 이 수의 최대 길이는 6글자이다. 16진수 수는 0~9와 A~F로 이루어져 있고, A~F는 10~15를 뜻한다. 또, 이 수는 음이 아닌 정수이다. www.acmicpc.net -결과 -코드 #include int main() { int input; scanf("%X", &input); printf("%d", input); return 0; } -풀이 16진수를 입력받아서 10진수로 출력하기 위해서 먼저 scanf로 16잔수를 입력받아야 한다. 입력받을 때 int로 받으면, 자연스레 10진수 정수로 변환되어 출력할 수 있다.
2022.09.21 -
17608: 막대기
자료구조 브론즈 2 https://www.acmicpc.net/problem/17608 17608번: 막대기 아래 그림처럼 높이만 다르고 (같은 높이의 막대기가 있을 수 있음) 모양이 같은 막대기를 일렬로 세운 후, 왼쪽부터 차례로 번호를 붙인다. 각 막대기의 높이는 그림에서 보인 것처럼 순서대로 www.acmicpc.net -결과 -코드 #include int main(){ int N, hist[100001]; int max=0, cnt=0; scanf("%d", &N); for (int i = 0; i = 0; i--){ if (max < hist[i]){ max = hist[i]; cnt++; } ..
2022.09.11 -
12605: 단어 순서 뒤집기
자료구조 브론즈 2 https://www.acmicpc.net/problem/12605 12605번: 단어순서 뒤집기 스페이스로 띄어쓰기 된 단어들의 리스트가 주어질때, 단어들을 반대 순서로 뒤집어라. 각 라인은 w개의 영단어로 이루어져 있으며, 총 L개의 알파벳을 가진다. 각 행은 알파벳과 스페이스로만 www.acmicpc.net -결과 -코드 #include void initialize(char* ch); int main() { char ch[100] = { 0 }, * pch, * startp; pch = ch; int i = 0, pchidx = 0, case_num = 1; int startidx = 0, endidx = 0; int N; scanf("%d", &N); getchar(); whi..
2022.09.11 -
1075: 나누기
브론즈 2 https://www.acmicpc.net/problem/1075 1075번: 나누기 첫째 줄에 N, 둘째 줄에 F가 주어진다. N은 100보다 크거나 같고, 2,000,000,000보다 작거나 같은 자연수이다. F는 100보다 작거나 같은 자연수이다. www.acmicpc.net -결과 -코드 #include int main() { int N, F, num, k, i; int n = 0; int count = 0; scanf("%d", &N); scanf("%d", &F); N = (N / 100) * 100; k = N; for (i = 0; i < 100; i++) { if (k % F == 0) { break; } k += 1; } if (i < 10) { printf("0"); } p..
2022.09.11