본문 바로가기

수학29

[백준 11564] 점프왕 최준민 (C++) https://www.acmicpc.net/problem/11564문제준민이는 점프를 좋아한다. 창영이는 그의 점프력을 시험하기 위해 수직선을 하나 놓고, a 이상 b 이하의 모든 정수 좌표에 맛있는 초콜릿을 놓았다. 수직선은 아래의 그림과 같이 나타낼 수 있다.준민이는 항상 0에서 시작하며, 준민이의 점프력이 k 라면 한 번 점프를 하여 -k 나 +k 좌표에 도달한다. 준민이는 항상 점프 거리가 k가 되도록 점프를 한다. 만약 0의 위치에 초콜릿이 있다면, 준민이는 점프하기 전에 초콜릿을 일단 먹고 시작한다.초콜릿 중독자인 준민이는 모든 초콜릿을 얻기 위해 수직선에 올라섰다. 또한 준민이는 아침에 밥을 아주 많이 먹었기 때문에 무한번 점프 할 수 있다. 여러분이 해야하는 일은, k의 점프력을 가진 준민.. 2024. 10. 10.
[백준 4134] 다음 소수 (C++) https://www.acmicpc.net/problem/4134문제정수 n(0 ≤ n ≤ 4*109)가 주어졌을 때, n보다 크거나 같은 소수 중 가장 작은 소수 찾는 프로그램을 작성하시오. 입력첫째 줄에 테스트 케이스의 개수가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있고, 정수 n이 주어진다. 출력각각의 테스트 케이스에 대해서 n보다 크거나 같은 소수 중 가장 작은 소수를 한 줄에 하나씩 출력한다. 문제 풀이브루트포스 문제. n부터 시작하여 1씩 더해가며 해당 수가 소수인지 확인한다. 하나의 수 i에 대해 에라토스테네스의 체처럼 2부터 sqrt(i)까지 반복문을 돌려 그 수가 i로 나누어 떨어지는지 확인해주면 된다. 나누어 떨어지면 소수가 아니므로 다음 수를 탐색하고, sqrt(i)까지 탐색.. 2024. 9. 14.
[백준 1183] 약속 (C++) https://www.acmicpc.net/problem/1183문제마법사 N명이 머글 문화를 이해하기 위해 머글과 약속을 잡았다. 각 마법사는 한 명의 머글을 만날 예정이다. 하지만, 마법사는 약속 시간보다 빨리 또는 늦게 도착할 수 있기 때문에 고민에 빠졌다. 결국 기다리는 시간을 최소화 하기 위해 모든 약속 시간을 T씩 미루려고 한다. 기다리는 시간은 먼저 도착한 사람이 늦게 도착한 사람이 도착할 때까지 기다리는 시간을 의미한다.마법사의 약속 시간은 A1, A2, ..., AN이고, 도착 시간은 B1, B2, ..., BN이다. 약속 시간을 T만큼 미루면, 기다리는 시간의 합은 |Ai + T - Bi|의 합과 같다. 기다리는 시간의 합이 최소가 되는 서로 다른 정수 T의 개수를 구해보자.입력첫째 줄.. 2024. 9. 11.
[백준 28702] FizzBuzz (C++) 문제FizzBuzz 문제는 𝑖=1,2,⋯ 에 대해 다음 규칙에 따라 문자열을 한 줄에 하나씩 출력하는 문제입니다. 𝑖가 3의 배수이면서 5의 배수이면 “FizzBuzz”를 출력합니다. 𝑖가 3의 배수이지만 5의 배수가 아니면 “Fizz”를 출력합니다. 𝑖가 3의 배수가 아니지만 5의 배수이면 “Buzz”를 출력합니다. 𝑖가 3의 배수도 아니고 5의 배수도 아닌 경우 𝑖를 그대로 출력합니다.FizzBuzz 문제에서 연속으로 출력된 세 개의 문자열이 주어집니다. 이때, 이 세 문자열 다음에 올 문자열은 무엇일까요?입력 FizzBuzz 문제에서 연속으로 출력된 세 개의 문자열이 한 줄에 하나씩 주어집니다. 각 문자열의 길이는 8$8$ 이하입니다. 입력이 항상 FizzBuzz 문제에서 연속으로 출력된.. 2024. 9. 10.
[백준 17103] 골드바흐 파티션 (C++) https://www.acmicpc.net/problem/17103문제골드바흐의 추측: 2보다 큰 짝수는 두 소수의 합으로 나타낼 수 있다.짝수 N을 두 소수의 합으로 나타내는 표현을 골드바흐 파티션이라고 한다. 짝수 N이 주어졌을 때, 골드바흐 파티션의 개수를 구해보자. 두 소수의 순서만 다른 것은 같은 파티션이다. 입력첫째 줄에 테스트 케이스의 개수 T (1 ≤ T ≤ 100)가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있고, 정수 N은 짝수이고, 2  출력각각의 테스트 케이스마다 골드바흐 파티션의 수를 출력한다. 문제 풀이에라토스테네스의 체를 이용한 문제. 에라토스테네스의 체를 이용하여 소수를 구한다. N을 두 소수의 합으로 나타내는 순서쌍 개수를 구해야 하므로, set에 모든 소수를 저장한.. 2024. 9. 8.
[백준 1037] 약수 (C++) https://www.acmicpc.net/problem/1037문제양수 A가 N의 진짜 약수가 되려면, N이 A의 배수이고, A가 1과 N이 아니어야 한다. 어떤 수 N의 진짜 약수가 모두 주어질 때, N을 구하는 프로그램을 작성하시오. 입력첫째 줄에 N의 진짜 약수의 개수가 주어진다. 이 개수는 50보다 작거나 같은 자연수이다. 둘째 줄에는 N의 진짜 약수가 주어진다. 1,000,000보다 작거나 같고, 2보다 크거나 같은 자연수이고, 중복되지 않는다. 출력첫째 줄에 N을 출력한다. N은 항상 32비트 부호있는 정수로 표현할 수 있다. 문제 풀이수학 문제.어떤 수 A가 N의 약수이려면 N은 A로 나누어떨어져야 한다. 나누어떨어지면 나머지가 생기지 않으므로 N/A 역시 약수가 된다.따라서 약수를 정렬한.. 2024. 9. 1.
[백준 2292] 벌집 (C++) https://www.acmicpc.net/problem/2292 문제위의 그림과 같이 육각형으로 이루어진 벌집이 있다. 그림에서 보는 바와 같이 중앙의 방 1부터 시작해서 이웃하는 방에 돌아가면서 1씩 증가하는 번호를 주소로 매길 수 있다. 숫자 N이 주어졌을 때, 벌집의 중앙 1에서 N번 방까지 최소 개수의 방을 지나서 갈 때 몇 개의 방을 지나가는지(시작과 끝을 포함하여)를 계산하는 프로그램을 작성하시오. 예를 들면, 13까지는 3개, 58까지는 5개를 지난다. 입력첫째 줄에 N(1 ≤ N ≤ 1,000,000,000)이 주어진다. 출력입력으로 주어진 방까지 최소 개수의 방을 지나서 갈 때 몇 개의 방을 지나는지 출력한다. 문제 풀이간단한 수학 문제. 1번은 처음이므로 하나의 방만 지나면 된다. 2.. 2024. 8. 27.
[백준 13909] 창문 닫기 (C++) https://www.acmicpc.net/problem/13909문제서강대학교 컴퓨터공학과 실습실 R912호에는 현재 N개의 창문이 있고 또 N명의 사람이 있다. 1번째 사람은 1의 배수 번째 창문을 열려 있으면 닫고 닫혀 있으면 연다.  2번째 사람은 2의 배수 번째 창문을 열려 있으면 닫고 닫혀 있으면 연다. 이러한 행동을 N번째 사람까지 진행한 후 열려 있는 창문의 개수를 구하라. 단, 처음에 모든 창문은 닫혀 있다.예를 들어 현재 3개의 창문이 있고 3명의 사람이 있을 때,1번째 사람은 1의 배수인 1,2,3번 창문을 연다. (1, 1, 1)2번째 사람은 2의 배수인 2번 창문을 닫는다. (1, 0, 1)3번째 사람은 3의 배수인 3번 창문을 닫는다. (1, 0, 0)결과적으로 마지막에 열려 있.. 2024. 8. 10.
[백준 2869] 달팽이는 올라가고 싶다 (C++) 문제땅 위에 달팽이가 있다. 이 달팽이는 높이가 V미터인 나무 막대를 올라갈 것이다.달팽이는 낮에 A미터 올라갈 수 있다. 하지만, 밤에 잠을 자는 동안 B미터 미끄러진다. 또, 정상에 올라간 후에는 미끄러지지 않는다.달팽이가 나무 막대를 모두 올라가려면, 며칠이 걸리는지 구하는 프로그램을 작성하시오. 입력첫째 줄에 세 정수 A, B, V가 공백으로 구분되어서 주어진다. (1 ≤ B  출력첫째 줄에 달팽이가 나무 막대를 모두 올라가는데 며칠이 걸리는지 출력한다. 문제 풀이수학 문제. 정상에 올라갈 때까지 반복문을 이용하면 시간 초과가 발생한다.달팽이가 정상에 올라갈 때까지 밤에 미끄러지다 마지막 하루는 낮에 모두 올라갈 수 있다. 다시 말해 나무 막대를 올라가는데 걸리는 날짜는 미끄러진 날짜의 일수 + .. 2024. 8. 9.