전체 글

게임 만들고 싶어요
1. 문제 상세 https://www.acmicpc.net/problem/2501 2. 문제 접근 for문을 사용하여 자연수 N 을 1부터 N 까지의 숫자로 나누어 가면서 나머지가 0인 경우에 카운트를 증가시킨다. 이렇게 약수를 구하며 카운트를 증가시키다가 입력받은 K 의 값과 같아지면 반복을 빠져나오고, 해당 수를 출력한다. 만약 N 까지의 수를 모두 나누어도 카운트가 K 와 같아지지 않았다면 0을 출력한다. 3. 문제 풀이 #include using namespace std; int main() { int n, k, i, count = 0; cin >> n >> k; for(i = 1; i
1. 문제 상세 https://www.acmicpc.net/problem/5086 2. 문제 접근 먼저 뒤의 수를 앞의 수로 나누어 나누어 떨어진다면 factor 를 출력한다. 아닌 경우 앞의 수를 뒤의 수로 나누어 나누어 떨어진다면 multiple 을 출력하자. 위의 경우가 모두 아닐 때 neither 를 출력한다. 무한 반복문을 통해 수를 계속 입력받고, 입력받은 두 수가 모두 0이면 루프를 빠져나오자. 3. 문제 풀이 #include using namespace std; int main() { int a, b; while(true) { cin >> a >> b; if(a == 0 && b == 0) break; else if(b % a == 0) cout
1. 문제 상세 https://www.acmicpc.net/problem/2869 2. 문제 접근 반복문을 통해 결과를 구한다면 간단하지만, 반복문을 사용할 시 문제해결 제한시간이 초과된다.while문으로 문제를 풀어봤는데 바로 시간초과.. 따라서, 반복문이 아닌 이동 높이, 떨어지는 높이, 목표 높이와 결과 사이의 규칙을 찾아 해결하자. 달팽이는 A 만큼 올라가고 B 만큼 미끄러진다. 즉 하루가 지난 후 달팽이는 A - B 만큼의 거리를 이동한다. 달팽이가 목표에 도달하면 미끄러지지 않기 때문에 총 높이는 V - B 가 된다. 즉 (V - B) / (A - B) 가 총 이동 날짜가 된다. 이 때 값이 나누어 떨어지지 않는다면 하루를 더 가야한다는 뜻이므로 이동 날짜에 1을 더해주자. 3. 문제 풀이 #..
1. 문제 상세 https://www.acmicpc.net/problem/1193 2. 문제 접근 대각선을 따라 지그재그 순서로 분수를 확인하여 해당 순서의 분수를 출력하는 것이 문제이다. 이를 참고해서, 대각선을 보고 규칙을 찾아보자. 대각선의 분수들을 보면 i 번째 대각선인 경우 그 대각선에는 i 개의 분수가 있다. 이에 따라 먼저 내가 입력받은 순서가 몇 번째 대각선에 있는지를 확인하자. 이를 확인하기 위해 입력받은 순서 n 에서 i 를 1씩 증가시키며 빼준다. n 이 i 보다 작거나 같아졌다면 i 번째 대각선에 내가 입력받은 순서가 있다는 것이다. 그리고 지그재그 순서이므로 대각선에서 분수들의 순서에도 규칙이 있다. 짝수 i 번 대각선이라고 할 때, 그 대각선 안의 분수는 1/i, 2/i - 1,..
1. 문제 상세 https://www.acmicpc.net/problem/2292 2. 문제 접근 중간부터 원하는 주소의 방까지 몇 개의 방을 거쳐야 하는지 구하자. 이번에는 규칙을 찾고 원하는 결과를 얻었을 때(주소에 도착)반복 횟수를 출력하면 된다. 첫 번째 방을 모두 둘러 쌀 경우 방이 6개 증가한다. 그 다음 다시 방을 모두 둘러 쌀 경우 방이 12개 증가한다. 이렇게 바깥쪽으로 방들이 한 줄 늘어 날 때 마다 방이 6의 배수씩 더해진다. 즉 1 + 6의 배수 작업을 몇 번 반복했을 때 주소값보다 커지는지를 확인하여 반복 횟수를 출력하면 된다. 3. 문제 풀이 #include using namespace std; int main() { int n, i, address = 1; cin >> n; f..
1. 문제 상세 https://www.acmicpc.net/problem/2903 2. 문제 접근 과정에 따른 점의 개수의 규칙을 보면 4, 9, 25, 81, ... 와 같이 2, 3, 5, 9, ... 의 제곱으로 이루어진다. 2, 3, 5, 9 ... 은 각 과정에서 한 변에 위치한 점의 개수들이 된다. 결과적으로 각 과정에서 모든 점의 개수는 한 변의 점 개수의 제곱이 된다. 이제 초기상태부터 과정을 거칠 때 마다 한 변의 점의 개수가 몇 개인지만 알아내면 된다. 처음엔 2개, 과정을 1번 거칠 시 3, 2번은 5, 3번은 9, ... 여기서 증가하는 수를 보면 이전 과정의 한 변의 점 갯수 + (이전 과정의 한 변의 점 갯수 - 1) 이다. 즉 2, 2+(2-1) = 3, 3+3(-1) = 5,..
Dry_p
건조한 프로그래밍