
[프로그래머스] 레벨 1 - 모의고사 (C++)
2020. 9. 8. 16:29
문제 풀이/프로그래머스
문제 설명 수포자는 수학을 포기한 사람의 준말입니다. 수포자 삼인방은 모의고사에 수학 문제를 전부 찍으려 합니다. 수포자는 1번 문제부터 마지막 문제까지 다음과 같이 찍습니다. 1번 수포자가 찍는 방식: 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, ... 2번 수포자가 찍는 방식: 2, 1, 2, 3, 2, 4, 2, 5, 2, 1, 2, 3, 2, 4, 2, 5, ... 3번 수포자가 찍는 방식: 3, 3, 1, 1, 2, 2, 4, 4, 5, 5, 3, 3, 1, 1, 2, 2, 4, 4, 5, 5, ... 1번 문제부터 마지막 문제까지의 정답이 순서대로 들은 배열 answers가 주어졌을 때, 가장 많은 문제를 맞힌 사람이 누구인지 배열에 담아 return 하도록 solution 함수를 작..

[프로그래머스] 레벨 2 - 위장 (C++)
2020. 9. 8. 16:08
문제 풀이/프로그래머스
문제 설명 스파이들은 매일 다른 옷을 조합하여 입어 자신을 위장합니다. 예를 들어 스파이가 가진 옷이 아래와 같고 오늘 스파이가 동그란 안경, 긴 코트, 파란색 티셔츠를 입었다면 다음날은 청바지를 추가로 입거나 동그란 안경 대신 검정 선글라스를 착용하거나 해야 합니다. 얼굴 - 동그란 안경, 검정 선글라스 상의 - 파란색 티셔츠 하의 - 청바지 겉옷 - 긴 코트 스파이가 가진 의상들이 담긴 2차원 배열 clothes가 주어질 때 서로 다른 옷의 조합의 수를 return 하도록 solution 함수를 작성해주세요. 제한사항 clothes의 각 행은 [의상의 이름, 의상의 종류]로 이루어져 있습니다. 스파이가 가진 의상의 수는 1개 이상 30개 이하입니다. 같은 이름을 가진 의상은 존재하지 않습니다. clo..

[프로그래머스] 레벨 2 - 전화번호 목록 (C++)
2020. 9. 8. 15:25
문제 풀이/프로그래머스
문제 설명 전화번호부에 적힌 전화번호 중, 한 번호가 다른 번호의 접두어인 경우가 있는지 확인하려 합니다. 전화번호가 다음과 같을 경우, 구조대 전화번호는 영석이의 전화번호의 접두사입니다. 구조대 : 119 박준영 : 97 674 223 지영석 : 11 9552 4421 전화번호부에 적힌 전화번호를 담은 배열 phone_book 이 solution 함수의 매개변수로 주어질 때, 어떤 번호가 다른 번호의 접두어인 경우가 있으면 false를 그렇지 않으면 true를 return 하도록 solution 함수를 작성해주세요. 제한사항 phone_book의 길이는 1 이상 1,000,000 이하입니다. 각 전화번호의 길이는 1 이상 20 이하입니다. 입출력 예 phone_book return [119, 97674..

[프로그래머스] 레벨 1 - 완주하지 못한 선수 (C++)
2020. 9. 8. 02:36
문제 풀이/프로그래머스
문제 설명 수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다. 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수들의 이름이 담긴 배열 completion이 주어질 때, 완주하지 못한 선수의 이름을 return 하도록 solution 함수를 작성해주세요. 제한사항 마라톤 경기에 참여한 선수의 수는 1명 이상 100,000명 이하입니다. completion의 길이는 participant의 길이보다 1 작습니다. 참가자의 이름은 1개 이상 20개 이하의 알파벳 소문자로 이루어져 있습니다. 참가자 중에는 동명이인이 있을 수 있습니다. 입출력 예 participant completion return [leo, kiki, ..

[TIL] 2020-09-07
2020. 9. 8. 02:08
TIL(Today I Learned)
Trigger docs.unity3d.com/kr/2018.4/Manual/CollidersOverview.html 콜라이더 - Unity 매뉴얼 콜라이더(Collider) 컴포넌트는 물리 충돌 처리를 위한 오브젝트의 형태를 정의합니다. 콜라이더는 보이지 않는 요소이므로 오브젝트의 메시와 정확히 동일한 모양일 필요는 없으며, 실제로는 게� docs.unity3d.com OnCollisionEnter처럼 물리적인 충돌이 일어날 경우, 물리적인 연산을 하기 위해서 굉장히 많은 부하가 일어난다. => is Trigger 둘 중 하나라도 is Trigger가 켜져 있으면 물리 연산을 진행하지 않고, Trigger가 발생하고 종료하게 된다. public class TestCollision : MonoBehavio..

[프로그래머스] 레벨 1 - 행렬의 덧셈 (C++)
2020. 9. 7. 14:57
문제 풀이/프로그래머스
문제 설명 행렬의 덧셈은 행과 열의 크기가 같은 두 행렬의 같은 행, 같은 열의 값을 서로 더한 결과가 됩니다. 2개의 행렬 arr1과 arr2를 입력받아, 행렬 덧셈의 결과를 반환하는 함수, solution을 완성해주세요. 제한사항 행렬 arr1, arr2의 행과 열의 길이는 500을 넘지 않습니다. 입출력 예 arr1 arr2 return [[1, 2], [2, 3]] [[3, 4], [5, 6]] [[4, 6], [7, 9]] [[1], [2]] [[3], [4]] [[4], [6]] 코드 #include #include using namespace std; vector solution(vector arr1, vector arr2) { vector answer; for(int i = 0; i < a..

[알고리즘 문제] 21. 카드게임
2020. 9. 7. 10:26
문제 풀이/알고리즘 문제풀이
코드 #include using namespace std; int main() { int a[10], b[10], r[10]; int i, ascore = 0, bscore = 0; for (i = 0; i > a[i]; for (i = 0; i > b[i]; for (i = 0; i b[i]) { r[i] = 1; ascore += 3; } else { r[i] = -1; bscore += 3; } } cout

[프로그래머스] 레벨 1 - 같은 숫자는 싫어 (C++)
2020. 9. 7. 09:33
문제 풀이/프로그래머스
문제 설명 배열 arr가 주어집니다. 배열 arr의 각 원소는 숫자 0부터 9까지로 이루어져 있습니다. 이때, 배열 arr에서 연속적으로 나타나는 숫자는 하나만 남기고 전부 제거하려고 합니다. 단, 제거된 후 남은 수들을 반환할 때는 배열 arr의 원소들의 순서를 유지해야 합니다. 예를 들면,arr = [1, 1, 3, 3, 0, 1, 1] 이면 [1, 3, 0, 1] 을 return 합니다.arr = [4, 4, 4, 3, 3] 이면 [4, 3] 을 return 합니다. 배열 arr에서 연속적으로 나타나는 숫자는 제거하고 남은 수들을 return 하는 solution 함수를 완성해 주세요. 제한사항 배열 arr의 크기 : 1,000,000 이하의 자연수 배열 arr의 원소의 크기 : 0보다 크거나 같고..

[TIL] 2020-09-06
2020. 9. 7. 00:53
TIL(Today I Learned)
Resource Manager public class PrefabTest : MonoBehaviour { GameObject prefab; GameObject tank; void Start() { // Load 기준: Resources 폴더 prefab = Resources.Load("Prefabs/Tank"); tank = Instantiate(prefab); // 생성 Destroy(tank, 3.0f); // 삭제 } } 누가 언제 뭘 만드는지 관리하기가 힘들기 때문에 하나의 Manager로 처리하는 편이 좋다. 폴더 정리 Shader: 빛이 플레이어를 관통했을 때 어떻게 반사되느냐를 정의하는 파일이라고 생각하면 된다. Model Prefab은 Prefab이 아니라 그냥 별도의 Model, 애셋이라..

[알고리즘 문제] 20. 가위 바위 보
2020. 9. 6. 14:53
문제 풀이/알고리즘 문제풀이
#include #include using namespace std; int main() { vector vA; int n, i, temp; cin >> n; for (i = 0; i > temp; vA.push_back(temp); } for (i = 0; i > temp; switch (temp) { case 1: if (vA[i] == 3) cout

[알고리즘 문제] 19. 분노 유발자
2020. 9. 6. 14:21
문제 풀이/알고리즘 문제풀이
#include #include using namespace std; int main() { vector vStudent; int n, i, temp, m, cnt = 0; cin >> n; for (i = 0; i > temp; vStudent.push_back(temp); } m = vStudent[vStudent.size() - 1]; for (i = vStudent.size() - 2; i >= 0; --i) { if (m < vStudent[i]) { cnt++; m = vStudent[i]; } } cout

[TIL] 2020-09-05
2020. 9. 6. 01:02
TIL(Today I Learned)
Prefab 기존 값을 덮어 쓸 수 있다. (Prefab의 override) 원본 Prefab의 값을 변경하면 기본 값을 적용하고 있던 Prefab들에게는 영향을 끼치나, 해당 값을 override한 Prefab에는 영향을 끼치지 않는다. Inspector View에서 override한 Prefab들을 한번에 확인 가능하다. 중첩된(Nested) Prefab(Pre-Fabrication) Prefab들을 엮어서 또 하나의 Prefab으로 만든다. 이 경우에도 부속 Prefab의 정보를 수정할 경우, 이를 묶어서 가지고 있는 큰 개념의 Prefab에도 반영이 된다. 단 override 개념은 동일하게 적용됨에 주의한다! Prefab Variant - Prefab의 상속 개념 이미 Prefab인 Object..

[알고리즘 문제] 18. 층간소음
2020. 9. 5. 22:26
문제 풀이/알고리즘 문제풀이
#include using namespace std; int main() { int n, m, input, i, cnt = 0, res = -1; cin >> n >> m; for (i = 0; i > input; if (input > m) ++cnt; else cnt = 0; if (res < cnt) res = cnt; } cout

[알고리즘 문제] 17. 선생님 문제
2020. 9. 4. 01:20
문제 풀이/알고리즘 문제풀이
#include using namespace std; int main() { int n, num, res, i, j, temp; cin >> n; for (i = 1; i > num >> res; temp = 0; for (j = 1; j

[TIL] 2020-09-03
2020. 9. 4. 00:18
TIL(Today I Learned)
Rotation Do not set one of the eulerAngles axis separately (eg. eulerAngles.x = 10; ) since this will lead to drift and undesired rotations. When setting them to a new value set them all at once as shown above. eulerAngles 축 중 하나를 별도로 설정하지 마라. (예: eulerAngles.x = 10;) 이는 표류(drift) 및 원치 않는 회전을 유발한다. 새 값으로 설정할 때는 모두 한꺼번에 설정하라. (예: transform.eulerAngles = new Vector3(0.0f, 0.0f, 0.0f);) docs.unity3..

[알고리즘 문제] 16. Anagram(아나그램 : 구글 인터뷰 문제)
2020. 9. 3. 01:38
문제 풀이/알고리즘 문제풀이
#include using namespace std; int main() { // 대문자라면 65 빼기 // 소문자라면 97 빼면 0부터 시작하는데, 알파벳이 26개니까 + 26 => 97 - 26 = 71 char a[101], b[101]; int check[52] = { 0 }; int f; bool result = true; cin >> a >> b; for (int i = 0; a[i] != '\0' || b[i] != '\0'; ++i) { f = a[i] >= 97 ? 71 : 65; ++check[a[i] - f]; f = b[i] >= 97 ? 71 : 65; --check[b[i] - f]; } for (int i = 0; i < 52; ++i) { if(check[i] == 0) co..

[TIL] 2020-09-02
2020. 9. 2. 23:56
TIL(Today I Learned)
Position Update()는 한 프레임당 실행된다. 60 프레임이라고 했을 경우, 1/60초마다 Update() 함수가 호출되는 셈이다. 따라서 해당 코드를 실행하면 플레이어가 비정상적으로 빠르게 움직인다. void Update() { if(Input.GetKey(KeyCode.W)) { transform.position += new Vector3(0.0f, 0.0f, 1.0f); } if(Input.GetKey(KeyCode.S)) { transform.position -= new Vector3(0.0f, 0.0f, 1.0f); } if (Input.GetKey(KeyCode.A)) { transform.position -= new Vector3(1.0f, 0.0f, 0.0f); } if (Inp..

[TIL] 2020-09-01
2020. 9. 1. 20:50
TIL(Today I Learned)
Component 패턴 게임 엔진 공부 시 "원리"를 이해하는 것이 중요하다. 디자인 패턴 -> 코드 작성 방법론 설계를 신경 안 쓰고 기능 구현 코드를 update에 전부 다 때려넣으면 언젠가는 다 벌을 받는다. (!!) => Component Pattern 모든 코드를 '부품화'해서 관리를 하는 것이 핵심이다. AnimationComponent _anim = new AnimationComponent(); SkillComponent _skill = new SkillComponent(); PhysicsComponent _physics = new PhysicesComponent(); // 사용 시... _anim.Update(deltaTick); _skill.Update(deltaTick); _physic..