https://www.acmicpc.net/problem/9625
9625번: BABBA
상근이는 길을 걷다가 신기한 기계를 발견했다. 기계는 매우 매우 큰 화면과 버튼 하나로 이루어져 있다. 기계를 발견했을 때, 화면에는 A만 표시되어져 있었다. 버튼을 누르니 글자가 B로 변했
www.acmicpc.net
풀고나서 무슨 문제인가 싶어서 검색해보니 DP(다이나믹 프로그래밍)이라 그러는데
사실 문제풀때는 그냥 문제설명보고 직접 적어보면서 풀었읍니다..
문제 출제의도랑은 부합하지 않을 수 있읍니다
입력 | 0(초기) | 1 | 2 | 3 | 4 | 5 | 6 |
출력 | A | B | BA | BAB | BABBA | ? | ? |
A(개수) | 1 | 0 | 1 | 1 | 2 | 3 | 5 |
B(개수 | 0 | 1 | 1 | 2 | 3 | 5 | 8 |
일단 출력은 잘 모르겠고
입력 차수별 A개수, B개수를 보면
A개수 = 이전 차수의 B의 개수
B개수 = 이전 차수의 A+B
임을 알 수 있었습니다.
코드 설명
13~14
입력한 k의 입력만큼의 길이를 가진 배열을 선언
16~17
배열은 선언하고 값을 할당하던지 초기화를 하던지 해야합니다.
그런데 이후에 있을 반복문에서 초기화가 안되어있는 배열을 돌리면 오류가 나니 미리 알고 있는 초기 값을 지정합니다.
A가 0(초기), 1일때 개수
B가 0(초기), 1일때 개수
19~22
이미 각 배열 0~1을 직접 할당해줬으니 시작은 2로 합니다.
입력한 k(input)까지 반복문을 돌리게 합니다.
위에서 말했듯이
A는 이전 차수 B의 개수를 따라가고
B는 이전 차수의 A+B개수를 따라갑니다.
'Programming Language > JAVA' 카테고리의 다른 글
[JAVA] 백준 문제풀이(1269번 : 대칭 차집합) (1) | 2022.12.06 |
---|---|
[JAVA] 백준 문제풀이(9733번 : 꿀벌) (0) | 2022.12.06 |
[JAVA] 백준 문제풀이(1252번 : 팰린드롬수) (0) | 2022.06.05 |
[JAVA] 백준 문제풀이 (10820번: 문자열 분석) (0) | 2022.06.04 |
[JAVA] 백준 문제풀이 (15351번: 인생 점수) (0) | 2022.06.04 |