인프런 커뮤니티 질문&답변

acoustic0419님의 프로필 이미지
acoustic0419

작성한 질문수

문제로 배우는 C언어

개울 건너기

돌이 n 개이면 arr[n] 을 구해야 하는 거 아닌가요?

작성

·

246

0

제가 잘못 이해한 것일 수도 있지만, 돌이 n 개라는 건 돌의 인덱스가 0~(n-1) 까지 있는 거니까, n 부터는 강을 건넌 것 아닌가요? 왜 arr[n] 이 아니라 arr[n+1] 을 구해야 하는 것인지 궁금합니다..

답변 2

0

강사님 풀이가 훨씬 깔끔하네요.. 

직접 셀 생각은 해보지 못했는데 배워가요!

확률통계를 배우신 분들이라면 아래 풀이로 접근하셨을 수 도 있을것 같은데 (저는 아래처럼 풀었습니다)

혹시 이런식으로 접근해도 괜찮을까요? 문풀경험이 별로 없어서요

#include<stdio.h>

int main(){
int N,i,j,total;
scanf("%d",&N);
// 돌다리가 N 개면 N+1 번 뛰어야 함
// 두번 뛰기가 가능한 최대 횟수
int max = (N+1)/2;
// 총 가짓수
int cnt =0;
// 두번 뛰는 횟수 i
// 한번 뛰는 횟수 N+1 - 2*i
for(i=0; i<=max; i++){
total = N+1 - 2*i + i;
// totalCi = p1!/p2!*p3! 라 하면
int p1 = 1;
int p2 = 1;
int p3 = 1;
for(j=1; j<=total; j++){
p1 = p1*j;
}
for(j=1; j<=i; j++){
p2 = p2 * j;
}
for(j=1; j<=total-i; j++){
p3 = p3 * j;
}
cnt += p1/(p2*p3);
}
printf("%d",cnt);
}

0

김태원님의 프로필 이미지
김태원
지식공유자

arr[0] 은 돌이 아니라 철수가 서있는 땅입니다. arr[1]위치가 첫번째 돌입니다. arr[0]=1, arr[1]=1로 초기화한 이유는  영상의 9분정도에 설명이 나옵니다.

arr[n]은 n번 돌이고 arr[n+1]은 건너편 땅입니다. 땅까지 가는 경우가 건너는 경우입니다.

acoustic0419님의 프로필 이미지
acoustic0419

작성한 질문수

질문하기