일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 |
Tags
- D3
- Database
- algogritim
- BOJ
- 감상문
- language
- Computer Science
- 독서
- OS
- 운영체제
- db
- 문제풀이
- D2
- swea
- LeetCode
- 백준
- 법의학
- network
- 자료구조
- Programmers
- SW Expert Academy
- cs
- algorithm
- 프로그래머스
- c++
- 네트워크
- 재테크/투자
- data structure
- 알고리즘
- 데이터베이스
Archives
- Today
- Total
선택은 나의 것
[SWEA] 11688 Calkin-Wilf tree 1 본문
문제
SWEA 11688 : Calkin-Wilf tree 1
SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
접근
문제의 조건은 크게 두 개인데,
∙ 트리의 루트는 1/1 을 나타낸다.
∙ 트리의 각 노드는 왼쪽 자식과 오른쪽 자식을 가지는데 어떤 노드가 a/b 를 나타내고 있다면, 왼쪽 자식은 a/a+b 를 오른쪽 자식은 a+b/b 를 나타낸다.
따라서 입력받은 문자열을 하나씩 확인하며 'L'일 경우 b = a + b를 해주고, 'R'일 경우 a = a + b를 해주면 쉽게 답을 구할 수 있다.
코드
#include <iostream>
#define endl "\n"
using namespace std;
int main() {
int t;
cin >> t;
for (int i = 1; i <= t; i++) {
string s;
cin >> s;
int a = 1, b = 1;
for (int j = 0; j < s.size(); j++) {
if (s[j] == 'L')
b = a + b;
else
a = a + b;
}
cout << "#" << i << " " << a << " " << b << endl;
}
}
'☽ Algorithm > SWEA' 카테고리의 다른 글
[SWEA] 1970 쉬운 거스름돈 (0) | 2021.08.13 |
---|---|
[SWEA] 1979 어디에 단어가 들어갈 수 있을까 (0) | 2021.08.12 |
[SWEA] 1983 조교의 성적 매기기 (0) | 2021.08.04 |
[SWEA] 1859 백만 장자 프로젝트 (0) | 2021.08.03 |
[SWEA] 2007 패턴 마디의 길이 (0) | 2021.08.02 |
Comments