728x90
- ์ง์ n์ด ์ฃผ์ด์ก์ ๋, ํ์๊ฐ ์๋ ๋๊น์ง 2๋ก ๊ณ์ ๋๋๋ ๊ฒ์ ๋ฐ๋ณตํ๋ค๊ฐ ์ต์ด๋ก ํ์๊ฐ ๋๋ ์๊ฐ์ ํด๋น ๊ฐ์ ์ถ๋ ฅํ ๋ค ๋๋ด๋ ํ๋ก๊ทธ๋จ์ ์ด๋ป๊ฒ ์์ฑํด ๋ณผ ์ ์์๊น์?
- ์ด๋ฌํ ๊ฒฝ์ฐ์๋ 2๋ก ๋๋๋ ๊ฒ์ ๋ช ๋ฒ ๋ฐ๋ณตํด์ผ ๋๋ ์ง๋ฅผ ์ ์๊ฐ ์์ผ๋ฏ๋ก ๋ฌดํ ๋ฃจํ๋ฅผ ์ด์ฉํด์ผ ํฉ๋๋ค.
- ์ํ๋ ์กฐ๊ฑด์ ๋ง์กฑํ์ ๋ break๋ก ๋ฐ๋ณต๋ฌธ์ ํ์ถํ๋ฉด ๋ฉ๋๋ค.
#include <stdio.h>
#include <stdbool.h>
int main() {
int n;
scanf("%d", &n);
while (true) {
printf("current val is %d\n", n);
if (n % 2 == 0) {
printf("n is even\n");
n = n / 2;
}
else {
printf("n is odd\n");
break;
}
}
printf("%d", n);
return 0;
}
โถ ๋ฌธ์ : ์์ฐ์ ์ด ์ฃผ์ด์ง๋๋ค. ๋ค์ ์กฐ๊ฑด์ ๋ฐ๋ผ, ์ ๋ณ๊ฒฝํ์ฌ ์ต์ข ์ ์ผ๋ก ์ ๋ง๋ค๊ณ ์ ํฉ๋๋ค.
- ์ด ์ง์์ธ ๊ฒฝ์ฐ, ๋ก ๋๋๋๋ค.
- ์ด ํ์์ธ ๊ฒฝ์ฐ, ์ ๊ณฑํ๊ณ ์ ๋ํฉ๋๋ค.
์ด ๋ช ๋ฒ์ ๋ฐ๋ณตํด์ผ, ์ด ๋๋์ง ๊ณ์ฐํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํด๋ณด์ธ์.
์๋ฅผ ๋ค์ด, ๊ฒฝ์ฐ, ์ธ
์์๋ก ์ด ๋๋ฏ๋ก ๋ต์ด ์ด ๋ฉ๋๋ค.
int main() {
int n, cnt=0;
scanf("%d",&n);
while(true){
if(n==1){
break;
}
if(n%2==0){
n/=2;
}
else if(n%2==1){
n=n*3+1;
}
cnt++;
}
printf("%d",cnt);
return 0;
}
์ ๊ฑฐ๋ญ์ ๊ณฑ์ ์ค ํ๋์ธ ์ ์ ๋ ฅ๋ฐ์, ๋ง์กฑํ๋ ๋ฅผ ๊ฐ์ ๊ตฌํ๋ ์ฝ๋๋ฅผ ์์ฑํด ๋ณด์ธ์.
#include <stdio.h>
int main() {
int n,x;
int cnt=0;
scanf("%d",&n);
while(1){
n/=2;
if(n==0){
break;
}
cnt++;
}
printf("%d",cnt);
return 0;
}
์ ์ n์ ๊ฐ์ ๋ฐ๋ผ ๋ค์๊ณผ ๊ฐ์ ์ฐ์ฐ์ ์งํํ ๋, cnt ๋ฒ์ ์ฐ์ฐ์ ํ์ ๋ ์ฒ์์ผ๋ก 1,000 ์ด์์ด ๋๋ค๊ณ ํฉ๋๋ค. cnt์ ๊ฐ์ ๊ตฌํด๋ณด๋ ํ๋ก๊ทธ๋จ์ ์์ฑํด ๋ณด์ธ์.
- n์ด ์ง์์ผ ๋, n์ 3์ ๊ณฑํ๊ณ 1์ ๋ํฉ๋๋ค.
- n์ด ํ์์ผ ๋, n์ 2๋ฅผ ๊ณฑํ๊ณ 2๋ฅผ ๋ํฉ๋๋ค.
#include <stdio.h>
int main() {
int n;
int cnt = 0;
scanf("%d",&n);
while(1){
if(n>=1000){
break;
}
if(n%2==0){
n = n*3+1;
}
else{
n = n*2+2;
}
cnt++;
}
printf("%d",cnt);
return 0;
}