Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- ue5
- 수학
- 백준
- 구현
- 우선순위 큐
- Team Fortress 2
- c++
- Unreal Engine 5
- BFS
- 트리
- 다이나믹 프로그래밍
- 백트래킹
- 재귀
- 유니티
- 정렬
- 브루트포스
- 시뮬레이션
- 자료구조
- 투 포인터
- DFS
- 누적 합
- 문자열
- 그래프
- 스택
- XR Interaction Toolkit
- 유니온 파인드
- 그리디 알고리즘
- VR
- 다익스트라
- 알고리즘
Archives
- Today
- Total
1일1알
백준 5904번 Moo 게임 C++ 본문
moo 문자열을 간단하게 숫자로 나타내 보겠다.
moo는 3, mooo는 4, mooooo는 5 이런 식으로 사용할 것이다.
moo 수열은 3 -> 3 4 3 -> 3 4 3 5 3 4 3 이런 식으로 증가하게 된다.
n을 입력받아서 n이 수열의 길이보다 크다면 수열의 길이를 규칙에 맞춰서 늘리고,
n이 수열의 길이보다 작다면 n의 값을 재조정하고 수열의 길이를 축소해가면서 문제를 해결하였다.
처음에는 직접 수열을 구현해보았는데, 그런 식으로 문제를 풀면 메모리 초과가 난다.
따라서 규칙에 맞춰서 특정 위치의 문자를 구하는 식으로 문제를 해결해야 한다.
#include <iostream>
#include <string>
#include <vector>
#include <math.h>
#include <algorithm>
#include <utility>
#include <stack>
#include <queue>
#include <math.h>
#include <set>
#include <map>
#include <unordered_map>
#include <unordered_set>
using namespace std;
typedef long long ll;
void solve(int num, int length, int middle) {
if (num <= 3) {
if (num == 1) {
cout << 'm';
}
else {
cout << 'o';
}
return;
}
if (num == length) {
cout << 'o';
return;
}
if (num > length) {
if (num - length <= middle + 1) {
if (num - length == 1) {
cout << 'm';
}
else {
cout << 'o';
}
return;
}
length = 2 * length + middle + 1;
solve(num, length, middle + 1);
}
else {
length = (length - middle) / 2;
if (num <= length) {
solve(num, length, middle - 1);
}
else {
if (num - length <= middle) {
if (num - length == 1) {
cout << 'm';
}
else {
cout << 'o';
}
return;
}
num = num - (length + middle);
solve(num, length, middle - 1);
}
}
}
int main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
int n;
cin >> n;
solve(n, 3, 3);
};
'알고리즘' 카테고리의 다른 글
백준 2251번 물통 C++ (0) | 2021.12.09 |
---|---|
백준 1446번 지름길 C++ (0) | 2021.12.08 |
백준 15662번 톱니바퀴 (2) C++ (0) | 2021.12.06 |
백준 2002번 추월 C++ (0) | 2021.12.05 |
백준 11568번 민균이의 계략 C++ (0) | 2021.12.04 |