코딩테스트
[level 1] 문자열 나누기 - 140108
https://school.programmers.co.kr/learn/courses/30/lessons/140108#
[level 1] 문자열 나누기 - 140108 풀이코드
더보기
#include <string>
#include <vector>
#include <iostream>
using namespace std;
int a, b, k;
string split;
int solution(string s) {
int answer = 0;
k = 0;
for (int i = 0; i < s.length(); i++) {
if (s[i] == s[k]) a++;
else b++;
if (a == b) {
split = s.substr(k, i - k + 1);
// 여기 split는 해당 문제를 푸는데는 관련이 없지만 디버깅용 입니다.
k = i + 1;
a = 0; b = 0;
answer++;
}
}
if (a > 0) answer++;
return answer;
}
[Silver IV] 좋은 단어 - 3986
https://www.acmicpc.net/problem/3986
[Silver IV] 좋은 단어 - 3986 풀이코드
더보기
// 본인이 작성한 코드
#include <bits/stdc++.h>
using namespace std;
int r;
long long n;
string m;
vector<char> a;
int main() {
ios::sync_with_stdio(false); cin.tie(NULL);
cin >> n;
for (int i = 0; i < n; i++) {
cin >> m;
for(int i = 0; i < m.length(); i++) {
if (m[i] == m[i + 1]) i += 1;
else {
if (a.size() < 1) {
a.push_back(m[i]);
}
else if (a.size() > 0) {
if (a.back() == m[i]) a.pop_back();
else a.push_back(m[i]);
}
}
}
if (a.empty()) r++;
a.clear();
}
cout << r;
return 0;
}
// 스택을 활용한 코드 (강사님)
#include <bits/stdc++.h>
using namespace std;
int r;
long long n;
string m;
int main() {
ios::sync_with_stdio(false); cin.tie(NULL);
cin >> n;
for (int i = 0; i < n; i++) {
cin >> m;
stack<char> stk;
for (char i : m) {
if (stk.size() && stk.top() == i) stk.pop();
else stk.push(i);
}
if (stk.size() == 0) r++;
}
cout << r;
return 0;
}
GameModeBase vs GameMode
구분 | GameModeBase | GameMode |
주요 목적 | 최소한의 기본 기능 제공 | GameModeBase의 기능 + 추가적인 규칙 및 로직 제공 |
기능 복잡도 | 간단하고 커스터마이징에 초점 | 다양한 기능이 포함되어 게임 규칙을 쉽게 설정 가능 |
사용 사례 | 빠른 프로토타이핑 또는 최소한의 게임 로직 필요 시 | 복잡한 게임 규칙이나 특별한 로직이 필요할 때 사용 |
Pawn 생성 | 기본 Pawn을 설정하고 생성 가능 | DefaultPawn, SpectatorPawn 등을 포함한 추가 설정 가능 |
HUD 관리 | HUD 클래스를 수동으로 설정해야 함 | HUD를 기본적으로 포함하며 설정 가능 |
PlayerController | PlayerController 클래스를 직접 설정해야 함 | 기본 PlayerController를 포함하며 설정 가능 |
PlayerState | 기본적으로 제공되지 않음 | PlayerState 클래스 제공 및 관리 |
GameState | 최소한의 기본 GameState 제공 | GameState를 완전한 기능으로 포함 |
특징적인 메서드 | BeginPlay, Tick 등만 기본적으로 포함 | Override 가능한 다양한 메서드 제공 |
네트워크 기능 | 클라이언트-서버 동기화 기능이 제한적 | 서버에서 게임 규칙, 승리 조건 등을 관리하며, 자동 동기화 지원 |
네트워크 관리 | 클라이언트 중심의 간단한 게임 구현에 적합 | 서버 중심의 게임 관리가 필요할 때 적합 |
역할 (Roles) | 네트워크 플레이어의 역할(Role)에 대한 관리 없음 | Authority(Role)를 기반으로 서버-클라이언트 간 데이터 관리 |
Replication | 직접 구현 필요 | GameState와 PlayerState를 통해 기본 동기화 제공 |
Maps & Mode → 프로젝트 전체에 기본 GameMode 설정
Window → World Settings → GameMode Override → 해당 Level에 GameMode 설정 (이게 1순위)
Character vs Pawn
Pawn → 소유할 수 있는 오브젝트 중 최상위 클래스 (Character 보다 상위)
Character → 인간형 캐릭터를 만들기에 최적화된 클래스 (이족보행 말고는 불편)
둘 다 Actor를 상속받고 있어서 Unreal LifeCycle이 적용 가능하다.