no image
프로그래머스/C++ 문자열 내 마음대로 정렬하기
문제 설명문자열로 구성된 리스트 strings와, 정수 n이 주어졌을 때, 각 문자열의 인덱스 n번째 글자를 기준으로 오름차순 정렬하려 합니다. 예를 들어 strings가 ["sun", "bed", "car"]이고 n이 1이면 각 단어의 인덱스 1의 문자 "u", "e", "a"로 strings를 정렬합니다.제한 조건strings는 길이 1 이상, 50이하인 배열입니다.strings의 원소는 소문자 알파벳으로 이루어져 있습니다.strings의 원소는 길이 1 이상, 100이하인 문자열입니다.모든 strings의 원소의 길이는 n보다 큽니다.인덱스 1의 문자가 같은 문자열이 여럿 일 경우, 사전순으로 앞선 문자열이 앞쪽에 위치합니다.입출력 예strings n return["sun", "bed", "car"..
2025.01.31
no image
프로그래머스/C++ K번째수
문제 설명배열 array의 i번째 숫자부터 j번째 숫자까지 자르고 정렬했을 때, k번째에 있는 수를 구하려 합니다.예를 들어 array가 [1, 5, 2, 6, 3, 7, 4], i = 2, j = 5, k = 3이라면array의 2번째부터 5번째까지 자르면 [5, 2, 6, 3]입니다.1에서 나온 배열을 정렬하면 [2, 3, 5, 6]입니다.2에서 나온 배열의 3번째 숫자는 5입니다.배열 array, [i, j, k]를 원소로 가진 2차원 배열 commands가 매개변수로 주어질 때, commands의 모든 원소에 대해 앞서 설명한 연산을 적용했을 때 나온 결과를 배열에 담아 return 하도록 solution 함수를 작성해주세요.제한사항array의 길이는 1 이상 100 이하입니다.array의 각 원..
2025.01.31
no image
프로그래머스/C++ 콜차츠 추측
문제 설명1937년 Collatz란 사람에 의해 제기된 이 추측은, 주어진 수가 1이 될 때까지 다음 작업을 반복하면, 모든 수를 1로 만들 수 있다는 추측입니다. 작업은 다음과 같습니다.1-1. 입력된 수가 짝수라면 2로 나눕니다. 1-2. 입력된 수가 홀수라면 3을 곱하고 1을 더합니다. 2. 결과로 나온 수에 같은 작업을 1이 될 때까지 반복합니다.예를 들어, 주어진 수가 6이라면 6 → 3 → 10 → 5 → 16 → 8 → 4 → 2 → 1 이 되어 총 8번 만에 1이 됩니다. 위 작업을 몇 번이나 반복해야 하는지 반환하는 함수, solution을 완성해 주세요. 단, 주어진 수가 1인 경우에는 0을, 작업을 500번 반복할 때까지 1이 되지 않는다면 –1을 반환해 주세요.제한 사항입력된 수, ..
2025.01.22
no image
Unreal Learning - Agents FPS Anemy 10(언리얼 머신러닝 FPS 적)
https://awesome-columnist-586.notion.site/Unreal-Learning-Agents-FPS-Anemy-10-dd451f777fc9481d961e6cb77f339ce0?pvs=4 Unreal Learning - Agents FPS Anemy 10 | NotionBP_AiCharacterR로 돌아와서 Mesh 클릭 후 오른쪽의 Animation 패널에서 Anim Class 의 오른쪽 파일 아이콘 클릭awesome-columnist-586.notion.site
2025.01.22
no image
Unreal Learning - Agents FPS Anemy 9(언리얼 머신러닝 FPS 적)
https://awesome-columnist-586.notion.site/Unreal-Learning-Agents-FPS-Anemy-9-81ace47cdcea40969cf7b7e2b594e93f?pvs=4 Unreal Learning - Agents FPS Anemy 9 | Notion함수 오버라이드 - Specify Agent Actionawesome-columnist-586.notion.site
2025.01.22
no image
Unreal Learning - Agents FPS Anemy 8(언리얼 머신러닝 FPS 적)
https://awesome-columnist-586.notion.site/Unreal-Learning-Agents-FPS-Anemy-8-b87b35fd76ae4aae918aa72a6c423518?pvs=4 Unreal Learning - Agents FPS Anemy 8 | NotionContent 폴더에서 Learn이라는 폴더를 새로 생성awesome-columnist-586.notion.site
2025.01.22
no image
Unreal Learning - Agents FPS Anemy 7(언리얼 머신러닝 FPS 적)
https://awesome-columnist-586.notion.site/Unreal-Learning-Agents-FPS-Anemy-7-0e08c72dcc2b412c85e42be7033d0918?pvs=4 Unreal Learning - Agents FPS Anemy 7 | NotionB_AiCharacterR 에서awesome-columnist-586.notion.site
2025.01.22
no image
Unreal Learning - Agents FPS Anemy 6(언리얼 머신러닝 FPS 적)
https://awesome-columnist-586.notion.site/Unreal-Learning-Agents-FPS-Anemy-6-5fa0bee1d3684ffc8664c88614250938?pvs=4 Unreal Learning - Agents FPS Anemy 6 | NotionBP_AiCharacterB를 복제awesome-columnist-586.notion.site
2025.01.22
반응형

문제 설명

문자열로 구성된 리스트 strings와, 정수 n이 주어졌을 때, 각 문자열의 인덱스 n번째 글자를 기준으로 오름차순 정렬하려 합니다. 예를 들어 strings가 ["sun", "bed", "car"]이고 n이 1이면 각 단어의 인덱스 1의 문자 "u", "e", "a"로 strings를 정렬합니다.

제한 조건

  • strings는 길이 1 이상, 50이하인 배열입니다.
  • strings의 원소는 소문자 알파벳으로 이루어져 있습니다.
  • strings의 원소는 길이 1 이상, 100이하인 문자열입니다.
  • 모든 strings의 원소의 길이는 n보다 큽니다.
  • 인덱스 1의 문자가 같은 문자열이 여럿 일 경우, 사전순으로 앞선 문자열이 앞쪽에 위치합니다.

입출력 예

strings n return

["sun", "bed", "car"] 1 ["car", "bed", "sun"]
["abce", "abcd", "cdx"] 2 ["abcd", "abce", "cdx"]

입출력 예 설명

입출력 예 1

"sun", "bed", "car"의 1번째 인덱스 값은 각각 "u", "e", "a" 입니다. 이를 기준으로 strings를 정렬하면 ["car", "bed", "sun"] 입니다.

입출력 예 2

"abce"와 "abcd", "cdx"의 2번째 인덱스 값은 "c", "c", "x"입니다. 따라서 정렬 후에는 "cdx"가 가장 뒤에 위치합니다. "abce"와 "abcd"는 사전순으로 정렬하면 "abcd"가 우선하므로, 답은 ["abcd", "abce", "cdx"] 입니다.

#include <string>
#include <vector>

using namespace std;

vector<string> solution(vector<string> strings, int n) {
    // 사용자 정의 정렬 함수 설정
    sort(strings.begin(), strings.end(), [n](const string &a, const string &b) {
        // n번째 문자가 다르면 n번째 문자를 기준으로 비교
        if (a[n] != b[n]) {
            return a[n] < b[n];
        }
        // n번째 문자가 같으면 사전순으로 비교
        return a < b;
    });
    
    return strings;
}

몰랐던것

  • sort(시작 반복자, 종료 반복자, 비교 함수);
  • 람다 함수 [n](const string &a, const string &b) { ... }
    • [n]캡처(capture) 부분입니다. 캡처는 람다 함수가 외부에서 선언된 변수를 사용할 수 있게 해줍니다. 여기서는 **n**을 캡처하여 람다 함수 내부에서 사용할 수 있게 합니다.
    • (const string &a, const string &b): 람다 함수의 매개변수 목록입니다. 여기서는 **const string &a**와 **const string &b**라는 두 개의 string 참조를 매개변수로 받습니다.
    • { ... }: 람다 함수의 본문으로, 두 매개변수 **a**와 **b**를 비교하여 true 또는 **false**를 반환합니다. 이 반환값은 sort 함수가 **a**와 **b**의 순서를 결정하는 데 사용합니다.

그냥 배열 []을 쓰지않고 vector를 쓰는 이유는 배열은 정적배열이고, vector는 동적 배열이다 벡터는 크기를 자유자제로 변하게할수있고, 일반 배열은 크기를 바꿀수없다.

vector<int> a;
a.push_back(10);  // 벡터에 요소 추가 가능
a.resize(5);      // 크기 조절 가능

int arr[5];       // 정적 배열은 크기 변경 불가능
  • vector<int>: 다양한 함수(size()push_back()pop_back()erase()clear()insert())가 제공되므로 사용이 편리하고 기능이 풍부합니다.
  • int[]: 기본적인 인덱스 접근 외에 별도의 메서드가 없습니다. 크기를 확인하려면 **sizeof**를 사용해야 합니다.
반응형
반응형

문제 설명

배열 array의 i번째 숫자부터 j번째 숫자까지 자르고 정렬했을 때, k번째에 있는 수를 구하려 합니다.

예를 들어 array가 [1, 5, 2, 6, 3, 7, 4], i = 2, j = 5, k = 3이라면

  1. array의 2번째부터 5번째까지 자르면 [5, 2, 6, 3]입니다.
  2. 1에서 나온 배열을 정렬하면 [2, 3, 5, 6]입니다.
  3. 2에서 나온 배열의 3번째 숫자는 5입니다.

배열 array, [i, j, k]를 원소로 가진 2차원 배열 commands가 매개변수로 주어질 때, commands의 모든 원소에 대해 앞서 설명한 연산을 적용했을 때 나온 결과를 배열에 담아 return 하도록 solution 함수를 작성해주세요.

제한사항

  • array의 길이는 1 이상 100 이하입니다.
  • array의 각 원소는 1 이상 100 이하입니다.
  • commands의 길이는 1 이상 50 이하입니다.
  • commands의 각 원소는 길이가 3입니다.

입출력 예

array commands return

[1, 5, 2, 6, 3, 7, 4] [[2, 5, 3], [4, 4, 1], [1, 7, 3]] [5, 6, 3]

입출력 예 설명

[1, 5, 2, 6, 3, 7, 4]를 2번째부터 5번째까지 자른 후 정렬합니다. [2, 3, 5, 6]의 세 번째 숫자는 5입니다.

[1, 5, 2, 6, 3, 7, 4]를 4번째부터 4번째까지 자른 후 정렬합니다. [6]의 첫 번째 숫자는 6입니다.

[1, 5, 2, 6, 3, 7, 4]를 1번째부터 7번째까지 자릅니다. [1, 2, 3, 4, 5, 6, 7]의 세 번째 숫자는 3입니다.

#include <string>
#include <vector>
#include <algorithm> // 정렬에 필요한 헤더

using namespace std;

vector<int> solution(vector<int> array, vector<vector<int>> commands) {
    vector<int> answer;

    // 각 command에 대해 처리
    for (const auto& command : commands) {
        int i = command[0];
        int j = command[1];
        int k = command[2];
        
        // array의 i번째부터 j번째까지 자른 부분을 subArray에 저장
        vector<int> subArray(array.begin() + i - 1, array.begin() + j);
        
        // subArray 정렬
        sort(subArray.begin(), subArray.end());
        
        // k번째 요소를 answer에 추가
        answer.push_back(subArray[k - 1]);
    }
    
    return answer;
}

몰랐던 것들

  • push_back(value)
    • 벡터의 끝에 새로운 요소 **value**를 추가합니다.
    • 코드에서 **answer.push_back(subArray[k - 1]);**로 answer 벡터에 **k**번째 요소를 추가했습니다.
    answer.push_back(subArray[k - 1]);
    
  • begin()과 end()
    • begin(): 벡터의 첫 번째 요소를 가리키는 반복자를 반환합니다.
    • end(): 벡터의 마지막 요소 다음을 가리키는 반복자를 반환합니다.
    • 코드에서 부분 배열을 자를 때 **array.begin() + i - 1**과 **array.begin() + j**를 사용했습니다.
vector<int> subArray(array.begin() + i - 1, array.begin() + j);
  • sort(begin, end)
    • C++의 <algorithm> 헤더에 포함된 함수로, 지정된 범위 **[begin, end)**를 정렬합니다.
    • 코드에서 **sort(subArray.begin(), subArray.end());**로 subArray 벡터의 요소를 정렬했습니다.
    sort(subArray.begin(), subArray.end());
    
반응형
반응형

문제 설명

1937년 Collatz란 사람에 의해 제기된 이 추측은, 주어진 수가 1이 될 때까지 다음 작업을 반복하면, 모든 수를 1로 만들 수 있다는 추측입니다. 작업은 다음과 같습니다.

1-1. 입력된 수가 짝수라면 2로 나눕니다. 1-2. 입력된 수가 홀수라면 3을 곱하고 1을 더합니다. 2. 결과로 나온 수에 같은 작업을 1이 될 때까지 반복합니다.

예를 들어, 주어진 수가 6이라면 6 → 3 → 10 → 5 → 16 → 8 → 4 → 2 → 1 이 되어 총 8번 만에 1이 됩니다. 위 작업을 몇 번이나 반복해야 하는지 반환하는 함수, solution을 완성해 주세요. 단, 주어진 수가 1인 경우에는 0을, 작업을 500번 반복할 때까지 1이 되지 않는다면 –1을 반환해 주세요.

제한 사항

  • 입력된 수, num은 1 이상 8,000,000 미만인 정수입니다.

입출력 예

n result

6 8
16 4
626331 -1

입출력 예 설명

입출력 예 #1

문제의 설명과 같습니다.

입출력 예 #2

16 → 8 → 4 → 2 → 1 이 되어 총 4번 만에 1이 됩니다.

입출력 예 #3

626331은 500번을 시도해도 1이 되지 못하므로 -1을 리턴해야 합니다.


※ 공지 - 2022년 6월 10일 다음과 같이 지문이 일부 수정되었습니다.

  • 주어진 수가 1인 경우에 대한 조건 추가
#include <string>
#include <vector>

using namespace std;

int solution(int num) {
    int count = 0;
    
    while (num != 1) {
        if (count >= 500) { 
            return -1;
        }
        if (num % 2 == 0) {
            num /= 2;
        } else {
            num = num * 3 + 1;
        }
        count++;
    }
    
    return count; 
}

반응형
반응형

https://awesome-columnist-586.notion.site/Unreal-Learning-Agents-FPS-Anemy-10-dd451f777fc9481d961e6cb77f339ce0?pvs=4

 

Unreal Learning - Agents FPS Anemy 10 | Notion

BP_AiCharacterR로 돌아와서 Mesh 클릭 후 오른쪽의 Animation 패널에서 Anim Class 의 오른쪽 파일 아이콘 클릭

awesome-columnist-586.notion.site

 

반응형
반응형

https://awesome-columnist-586.notion.site/Unreal-Learning-Agents-FPS-Anemy-9-81ace47cdcea40969cf7b7e2b594e93f?pvs=4

 

Unreal Learning - Agents FPS Anemy 9 | Notion

함수 오버라이드 - Specify Agent Action

awesome-columnist-586.notion.site

 

반응형
반응형

https://awesome-columnist-586.notion.site/Unreal-Learning-Agents-FPS-Anemy-8-b87b35fd76ae4aae918aa72a6c423518?pvs=4

 

Unreal Learning - Agents FPS Anemy 8 | Notion

Content 폴더에서 Learn이라는 폴더를 새로 생성

awesome-columnist-586.notion.site

 

반응형
반응형

https://awesome-columnist-586.notion.site/Unreal-Learning-Agents-FPS-Anemy-7-0e08c72dcc2b412c85e42be7033d0918?pvs=4

 

Unreal Learning - Agents FPS Anemy 7 | Notion

B_AiCharacterR 에서

awesome-columnist-586.notion.site

 

반응형
반응형

https://awesome-columnist-586.notion.site/Unreal-Learning-Agents-FPS-Anemy-6-5fa0bee1d3684ffc8664c88614250938?pvs=4

 

Unreal Learning - Agents FPS Anemy 6 | Notion

BP_AiCharacterB를 복제

awesome-columnist-586.notion.site

 

반응형