[C언어 코드업 문제풀이] CodeUp 1282 : 제곱수 만들기
ET의 공부/C언어 연습문제[ 코드업 ]2020. 3. 18. 21:15
코드업 1282번 제곱수 만들기 문제 풀이 해답입니다.
1. 문제 설명
n이 입력되면 k를 빼서 제곱수를 만들 수 있는 k를 구하고,
그 제곱수에 루트를 씌운 수(제곱근) t를 구하여라.
이 때 k는 여러가지가 될 수 있는데 가장 작은 k를 출력한다.
2. 입력
n이 입력된다.(0<k<n<=2^31)
3. 출력
k와 t를 출력한다. 이 때 k는 여러가지가 될 수 있는데 가장 작은 k를 출력한다.
4. 입력 예시
34
5. 출력 예시
9 5
34에서 9를 빼면 25이고, 25의 제곱근은 5이다.
6. 문제 풀이
#include<stdio.h>
int main(){
int n;
int k,t;
scanf("%d",&n);
for(int i = 1; i<=n; i++){
if ( (n >= i*i) && (n < (i+1)*(i+1)) )
{
k =n-i*i;
t = i;
break;
}
}
printf("%d %d",k,t);
return 0;
}
|
반복문을 통해 0부터 입력받은 수 까지 제곱근을 구하고 크기를 비교하다보면 time out이 될것입니다.
이번 문제는 결국 입력 받은 n에 가장 가까운 제곱근을 찾는 것인데,
만약 27이란 수가 n으로 주어졌다고 가정할 때 만들 수 있는 제곱근은 5,6,7,8.... 이 겠죠.
여기서 (n >= i*i) 을 만족 하는 수만 찾는다면 1,2,3,4,5 또한 만족하게 됩니다.
이중에 맞는 값인 5를 찾기 위해 (n < (i+1)*(i+1)) 와 AND 를 취해 준다면 가장 가까운 제곱근을 구할 수 있습니다.
'ET의 공부 > C언어 연습문제[ 코드업 ]' 카테고리의 다른 글
[C언어 코드업 문제풀이] CodeUp 1284 : 암호 해독 (0) | 2020.03.22 |
---|---|
[C언어 코드업 문제풀이] CodeUp 1283 : 주식 투자 (2) | 2020.03.18 |
[C언어 코드업 문제풀이] CodeUp 1281 : 홀수는 더하고 짝수는 빼고 3 (1) | 2020.03.18 |
[C언어 코드업 문제풀이] CodeUp 1280 : 홀수는 더하고 짝수는 빼고 2 (0) | 2020.03.12 |
[C언어 코드업 문제풀이] CodeUp 1279 : 홀수는 더하고 짝수는 빼고 1 (0) | 2020.03.12 |
댓글()