(4주차) 10월5일
2007(나) 9월/평가원 16(고3), for+break, while
-
(1/3) 2007년(나) 9월/평가원 16(고3) 풀이 (1)
-
(2/3) 2007년(나) 9월/평가원 16(고3) 풀이 (2)
-
(3/3) 2007년(나) 9월/평가원 16(고3) 풀이 (3), for+break, while, 과제설명
자연수 $n$에 대하여 점 $P_n$을 다음 규칙에 따라 정한다.
(가) 점 $P_1$의 좌표는 $(1,1)$이다.
(나) 점 $P_n$의 좌표가 $(a,b)$일때,
- $b<2^a$이면 점 $P_{n+1}$의 좌표는 $(a,b+1)$이고
- $b=2^a$이면 점 $P_{n+1}$의 좌표는 $(a+1,1)$이다.
점 $P_n$의 좌표가 $(10,2^{10})$일 때, $n$의 값은?
(1) $2^{10}-2$
(2) $2^{10}+2$
(3) $2^{11}-2$
(4) $2^{11}$
(5) $2^{11}+2$
(풀이전략)
-
$P_1$로부터 $P_2$를 구한다.
-
$P_2=(10,2^{10})$인지 체크
- 맞다면 $n=2$
- 아니라면 아래를 진행
-
$P_2$에서 $P_3$을 구한다.
-
$P_3=(10,2^{10})$인지 체크
- 맞다면 n=3
- 아니라면 아래를 진행
-
...
그래서 아래와 같은 로직이면 좋겠다.
-
for $n=1,2,\dots, 2^{11}+2$까지 아래를 반복함 (단, $P_n=(10,2^{10})$인 경우에는 반복중지)
if Pn==(10,2^(10)) 인 경우:
반복문 탈출
else
반복할내용
(풀이)
a=c()
b=c()
a[1]=1
b[1]=1
for(n in 1:2^12){
if ((a[n]==10)&(b[n]==2^10)){
print(n)
break
}else{
## 탈출못했을때 실행되는 코드 (실질적인 문제풀이
if(b[n]<2^(a[n])){
a[n+1]=a[n]
b[n+1]=b[n]+1
}else{
if(b[n]==2^(a[n])){
a[n+1]=a[n]+1
b[n+1]=1
}
}
}
}
c(2^10-2 , 2^10+2 , 2^11-2 , 2^11 , 2^11+2)
답은 3번
(1) 방법1: for + break 를 적절하게 활용
(2) 방법2: while 을 이용
x= -5
while(x<0){
print('x는음수')
x= x+1
}
-
for + break를 활용하여 위와 같은 결과가 나오도록 코드를 작성하라.
for (x in -5:10){
if (????){
break
}else{
print('x는음수')
#x=x+1
}
}