백준 문제
-
백준 2993(세 부분) c++백준 문제 2021. 9. 6. 00:14
문제 2993번: 세 부분 첫째 줄에 원섭이가 고른 단어가 주어진다. 고른 단어는 알파벳 소문자로 이루어져 있고, 길이는 3보다 크거나 같고, 50보다 작거나 같다. www.acmicpc.net 주어진 단어를 세등분으로 나누어 한등분씩 역배치 하여 마지막에 역배치한 세등분을 다시 한등분으로 합쳐서 가장 단어의 사전순이 빠른 단어를 찾는 문제입니다. 처음에 세등분으로 나눈다는게 어떤 기준도 없고 해서 단순히 단어의 알파벳 개수의 12자 이면 4/4/4로 나누는 줄 알았습니다. 하지만 그러기에는 너무 단순했고 예제 문제도 틀리게 나왔습니다. 알고보니 세등분으로 나누는게 알파벳 개수의 제한 되지않고 알파벳 개수가 1개여도 나눌 수 있었습니다. 예를들어서 1/1/10 도 가능하고 10/1/1도 가능했습니다. 따..
-
백준 1008(A/B) c++백준 문제 2021. 9. 5. 23:05
문제 1008번: A/B 두 정수 A와 B를 입력받은 다음, A/B를 출력하는 프로그램을 작성하시오. www.acmicpc.net 단순히 정수 A,B를 입력받고 A/B를 출력하는 문제입니다. 하지만 여기서 짚고 넘어가야할점이 출력형태가 실제정답과 출력값의 절대오차 또는 상대오차가 10^-9 이하이면 정답이라는 점입니다. 정확히 무슨 소리인지 이해가 안갔습니다. 그래서 무작정 소수점 9자리 까지 출력하라는 것이구나 라고 생각해 코드를 짰습니다. int a, b; scanf("%d", &a); scanf("%d", &b); printf("%.9f", (float)a / b); 정수 a와b를 받아 그 둘을 나누고 출력형태에서 float값을 캐스팅 해주고 소수점 자리 9자리까지 출력했습니다. 그랬더니 소수점 7..
-
백준 1158(요세푸스 문제) c++백준 문제 2021. 9. 5. 17:43
문제 1158번: 요세푸스 문제 첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 5,000) www.acmicpc.net 1번 부터 n번까지 사람이 둥글게 원을 이루며 앉아 있다고 가정합니다. 이때, k번째 사람을 제거하는데 제거 당하는 사람의 순서가 오세푸스 순열이 됩니다. 예를들어 n=7이고 k=3이면 1번 부터 7번까지의 사람을 k번째 제거하면 k=3이므로 남아있는 사람은 1, 2, 4, 5, 6, 7이 되고 제거된 3은 요세푸스 첫번째 원소로 들어갑니다. 또 k번째 사람을 제거하면 1, 2, 4, 5, 7이 되고 제거된 6은 요세푸스 두번째 원소로 들어갑니다. 이렇게 사람이 없어질때 까지 반복한 요세푸스 순열을 구하면 됩니다. int n, k; cin >> n..
-
백준 10804(카드 역배치) c++백준 문제 2021. 9. 5. 16:20
문제 10804번: 카드 역배치 1부터 20까지 오름차순으로 놓인 카드들에 대해, 입력으로 주어진 10개의 구간 순서대로 뒤집는 작업을 했을 때 마지막 카드들의 배치를 한 줄에 출력한다. www.acmicpc.net 숫자카드 가 1부터 20까지 오름차순으로 놓여져 있다고 가정합니다. 이때 구간을 입력 받으면 그 구간의 수들을 역배치 하고 출력하는 문제 입니다. 예를 들어 구간이 [1,5] 이렇게 주어진다면 1번 카드부터 5번 카드를 역배치 시키는 문제 입니다. c++의 stl 함수인 reverse 함수를 사용해 주었습니다. reverse 함수는 구간을 설정할 수 있는데 만약 벡터 v가 있다고 할때 reverse(v.begin(),v.end())이렇게 주어지면 v.begin()이 가리키는 원소를 포함해서 ..
-
백준 15552(빠른 A+B) C / C++백준 문제 2021. 9. 5. 15:33
문제 15552번: 빠른 A+B 첫 줄에 테스트케이스의 개수 T가 주어진다. T는 최대 1,000,000이다. 다음 T줄에는 각각 두 정수 A와 B가 주어진다. A와 B는 1 이상, 1,000 이하이다. www.acmicpc.net 단순한 수학 구현 문제입니다. 몇번 계산 할지 테스트 케이스 T개를 입력받아 정수 A와 B를 입력받아 A와B를 더해주는 값을 출력해주는 문제입니다. 먼저 C언어로 풀은 코드 입니다. #include int main(){ int T; //테스트케이스 선언 int A, B; //정수 A,B선언 scanf("%d", &T); //몇번 계산할지 테스트케이스 입력받기 for (int i = 0; i < T; i++) { //T번 동안 계산 반복 scanf("%d %d", &A, &B)..
-
백준 16563번 (어려운 소인수분해) c++백준 문제 2021. 8. 31. 18:21
문제 16563번: 어려운 소인수분해 첫째 줄에는 자연수의 개수 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 자연수 ki (2 ≤ ki ≤ 5,000,000, 1 ≤ i ≤ N)가 N개 주어진다. www.acmicpc.net 단순히 백준 11653(소인수분해)문제와 비슷한줄 알고 바로 똑같이 코드를 작성해 주었습니다. #include using namespace std; int main() { ios_base::sync_with_stdio(false), cin.tie(NULL), cout.tie(NULL); int n; cin >> n; while (n--) { int k; cin >> k; for (int i = 2; i * i
-
백준 2960번(에라토스테네스의 체)c++백준 문제 2021. 8. 30. 16:17
문제 2960번: 에라토스테네스의 체 2, 4, 6, 8, 10, 3, 9, 5, 7 순서대로 지워진다. 7번째 지워진 수는 9이다. www.acmicpc.net 기존 에라토스테네스에서 응용 문제입니다. 에라토스테네스는 소수를 제외하고 합성수를 지웠는데 여기 문제에서는 소수까지 지워서 임의의 정수 k를 입력받아 k 번째 지운 수를 출력해주는 문제입니다. int n, k; cin >> n >> k; int cnt = 0; bool flag = false; 먼저 어디까지 소수를 판별할 n 과 몇번째에서 지우는지 k 를 입력 받습니다. 변수 cnt를 선언해줘서 숫자를 지울때마다 cnt가 올라가게 해서 cnt가 k가 되면 그 수를 출려하게끔하는 장치입니다. bool형 flag는 cnt가 k로 되면 더이상 나머지..