c 22

백준_2292_벌집

문제 풀기 전 생각) 연속되는 숫자가 원형을 그리며 시계방향으로 회전하고 있으므로 규칙을 찾아 문제를 풀어야겠다는 생각을 했습니다. 1을 기준으로 직선을 그어보면, 1->5->15->31->53 (+4, +10, +16, +22) 1->7->19->37->61 (+6, +12, +18, +24) 보다시피 커지는 숫자가 6씩 증가하고 있습니다. 위 규칙을 이용해서, 입력받은 숫자에서 -6, -12, -18 .... 을 하며 몇 번 연산되었는지 세어보면 몇 번째 궤도에 위치해 있는지 구할 수 있을 것 같습니다. 풀이) N을 입력받아 규칙이 몇 번 사용되었는지를 확인하도록 프로그래밍합니다. 궤도가 올라갈수록 가장 작은 값과 가장 큰 값의 차이가 커지므로 이를 해결할 수 있도록 공식을 세웁니다. 1.규칙이 몇 ..

백준/c 2024.04.22

백준_2231_분해합

분해합의 개념) 어떤 자연수 N이 있을 때, N의 분해합은 N+각 자리수의 합입니다. 예를 들어, 198의 분해합은 198 + 1 + 9 + 8 = 216 입니다. 이때 198은 216의 생성자라고 합니다. 문제 풀기 전 생각) N이 백만 이하의 자연수이므로 1부터 하나하나 검사를 하기에는 시간이 너무 오래 걸릴 것 같습니다.(주어진 시간도 2초로 짧습니다.) 분해합은 생성자와 각 자리수를 모두 더한 것인데, 각 자리수가 될 수 있는 가장 큰 값은 9입니다. 그러므로, 분해합-자리수*9 를 한 수가 생성자 될 수 있는 최솟값이 되는 것이죠. 예를 들어 주어진 분해합이 256일 때 우리는 256 - 3*9 = 229 부터 검사를 하면 되는 것입니다. 풀이) 1. 먼저, 분해합을 입력받아 몇 자리수인지 구합..

백준/c 2024.04.22