(주말에 추가)
public class InputRebinder : MonoBehaviour
{
public InputActionAsset actionAsset;
private InputAction spaceAction;
private InputAction escapeAction;
void Start()
{
// [구현사항 1] actionAsset에서 Space 액션을 찾고 활성화합니다.
spaceAction = actionAsset.FindAction("Space");
// Space 액션 활성화
spaceAction.Enable();
}
// [구현사항 2] ContextMenu 어트리뷰트를 활용해서 인스펙터창에서 적용할 수 있도록 함
void OnEnable()
{
// Esc 키에 대한 액션 생성
escapeAction = new InputAction(binding: "<Keyboard>/escape");
// Esc 키 입력 이벤트 등록
escapeAction.performed += OnEscapePressed;
// 액션 활성화
escapeAction.Enable();
}
private void OnEscapePressed(InputAction.CallbackContext context)
{
// Esc 키 눌렀을 때 실행
RebindSpaceToEscape();
}
public void RebindSpaceToEscape()
{
// [구현사항 3] InputRebinder 클래스의 RebindSpaceToEscape 함수는 기존 Spacebar 키를 입력하던 액션을 Escape키를 입력했을 때 발생하도록 합니다.
if (spaceAction == null)
return;
actionAsset.FindAction("Space").ApplyBindingOverride("<Keyboard>/escape");
Debug.Log("Done!");
}
void OnDestroy()
{
// 액션을 비활성화합니다.
spaceAction?.Disable();
escapeAction?.Disable();
}
}
s1.find(s2)
transform(첫 번째 입력 반복자, 마지막 입력 반복자, 첫 번째 출력 반복자, 변환 함수);
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
string toLowerCase(const string& str) {
string lowerStr = str;
transform(lowerStr.begin(), lowerStr.end(), lowerStr.begin(), ::tolower);
return lowerStr;
}
int solution(string myString, string pat) {
int answer = 0;
if (myString.length() >= pat.length())
{
if (toLowerCase(myString).find(toLowerCase(pat)) != string::npos)
answer = 1;
}
return answer;
}
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
int solution(string myString, string pat) {
transform(myString.begin(),myString.end(),myString.begin(),::toupper);
transform(pat.begin(),pat.end(),pat.begin(),::toupper);
return myString.find(pat) != string::npos;
}
stoll
: long long 타입으로 변환해 더 큰 범위의 숫자를 처리할 수 있음#include <string>
#include <vector>
using namespace std;
int solution(string t, string p) {
int answer = 0;
long long pInt = stoll(p);
for (int i = 0; i < t.length() - p.length() + 1; i++)
{
string temp1 = t.substr(i, p.length());
if (stoll(temp1) <= pInt)
answer++;
}
return answer;
}
substr(size_t pos)
: 문자열의 pos 위치부터 끝까지의 하위 문자열을 반환substr(size_t pos, size_t len)
: 문자열의 pos 위치부터 len 길이만큼의 하위 문자열을 반환#include <string>
#include <vector>
using namespace std;
int solution(string s) {
int answer = 0;
while (s.length() >= 2)
{
int same = 0;
int diff = 0;
for (int i = 0; i < s.length(); i++)
{
if (s[0] == s[i])
same++;
else
diff++;
if (same == diff)
{// 일치하면 문자열 분리
s = s.substr(i + 1, s.length() - (same + diff));
answer++;
break;
}
}
if (same != diff)
{// 포문 이후에도 일치하지 않는다면 전체가 하나다
answer++;
break;
}
}
if (s.length() == 1)
{
answer++;
}
return answer;
}
#include <string>
#include <vector>
using namespace std;
int solution(string s) {
int answer = 0;
int xCount = 1;
int yCount = 0;
char x = s[0];
for (int i = 1; i < s.size(); i++) {
// xCount = 1 로 시작하되 i도 1로 시작
if (s[i] == x) {
xCount++;
} else {
yCount++;
}
if (xCount == yCount) {
// 일치하면 0으로 초기화, 그대로 다음 문자로 시작 문자 변경
xCount = 0;
yCount = 0;
answer++;
x = s[i + 1];
}
}
if (xCount > 0) answer++; // 포문을 다 돌고나서도 0이 아니라면 아직 마지막 문장이 있는 것
return answer;
}