c#으로 피보나치를 풀어보겠다.
위와같은 피보나치 함수에서 0과 1이 출력되는 횟수를 계산해 출력하면 된다.
처음 생각엔 0과 1을 세는 전역변수를 선언하고, 문제에 나온 피보나치 함수를 실행해 n이 0이나 1이 될 때마다 변수를 증가시키고 그것을 출력하면 될 거 같다는 생각을 하였다. 저 함수를 실행하면 피보나치 수도 구해지지만 그건 문제에서 요구하는 거랑은 아무 상관없으니 그냥 변수 하나 생성해 그걸로 입력받도록 하면 될거같다.
그런데 뭔가 잘 안됬다. 내가 c#에 대한 개념이 부족해서 그런거 같다.
클래스를 하나 만들고, 객체를 만들어서 출력을 하게 해봤다.
??
문제가 제공해주는 예시를 넣어봤는데 맞지 않게 나왔다. 즉 이건 내 코드가 문제가 있다는 뜻.
그 이후로 이것저것 생각해봤지만 떠오르는게 마땅치 않았다.
그래서 검색을 해보다 발견한게 있다.
문제에서 제공하는 피보나치 함수는 사용하지 않고 이 규칙에 따라 코드를 짜는 것이다.
괜찮다는 생각이 들어 코드를 짜보았다.
피보나치 함수를 void로 하고, n이 0과 1 둘다 아닐때 n-1, n-2일때의 피보나치를 실행하게 했다.
결과도 잘 나온다.
.......
다른 방법을 써보자.
이 방법도 괜찮은거같다.
피보나치 관련 함수를 쓰지않고 배열을 이용해 푸는 방법인거같은데,
따라했다.
.......
다시 코드를 보니 for문에서 i<test가 아니라 i<=test가 맞는거 같아 보였다. 왜냐면 코드를 실행시키고 2를 입력하니 출력이 0 0으로 나왔기 때문(즉 2일때의 경우가 실행되지 않았다는 뜻)
그래서 바꾸었다.
된다.
야호
배운점:
1. 문제를 잘 읽고 효율적인 방법을 생각해 내는 것이 중요한거 같다. (내가 피보나치 함수 쓰니까 시간초과 났던게 배열로 푸니까 풀린것처럼)
2.
{n}이거가 n번째 변수의 값을 출력해주는지 지금 알게 되었다. 기억해야겠다.
3. 문제에서 알고리즘 분류를 누르면
이렇게 분류가 나오는데 보고 문제를 풀면 푸는 방법을 찾는데 도움이 될 거 같다.
'코테용 문제풀이 > 백준' 카테고리의 다른 글
X보다 작은 수 풀이 (0) | 2022.12.30 |
---|---|
별 찍기 - 1 풀이 (0) | 2022.12.30 |
백준 1009번 문제 분산처리 c#으로 풀기 (0) | 2019.06.08 |
백준 1004번 문제 어린 왕자 c#으로 풀기 (0) | 2019.06.08 |
백준 1002번 문제 터렛 c#으로 풀기 (0) | 2019.06.04 |