전체 글136 [1일 1 구현] Managers.cs Managers - 모든 매니저를 총괄하는 GameObject 본격적인 구현에 앞서 각종 매니저들의 싱글톤 구현 코드가 너무 날 것이고 하이어라키에 여러개의 매니저가 올라와 있는게 보기가 싫었다.그래서 하나의 GameObject에 모든 Manager를 담는 방식으로 구현한다. - Rookiss 참고. 구현 코드using System.Collections;using System.Collections.Generic;using UnityEngine;public class Managers : MonoBehaviour{ static Managers s_instance; static Managers Instance { get { Init(); return s_instance; } } #region .. 2024. 6. 4. n^2 배열 자르기 (C#) 📌프로그래머스 87390💡풀이정수 List를 만든다.for문으로 주어진 left ~ right 까지만 조건을 걸어 반복한다.각 길이가 n인 행렬의 x, y 좌표를 구한다고 생각한다.x 좌표는 i / n, y 좌표는 i % n. 둘 중 더 큰 값을 넣는다.해당 좌표에 들어가있는 값은 (x or y) + 1이다.public int[] n2제곱배열자르기(int n, long left, long right){ List list = new List(); // 2차원 배열이라고 생각하고 x, y 좌표를 찾는다. // 해당 좌표의 x, y 값 중 더 큰 값을 추가. for(long i = left; i y ? x + 1 : y + 1; list.Add(va.. 2024. 6. 4. 주사위 게임 2 (C#) 📌프로그래머스 181930💡풀이가장 단순하면서 가장 직관적인 if 조건으로만 구분한다.if 1. 세 주사위가 모두 같은 수일 때 returnif 2. 두 주사위가 같은 수일 때 return3. 이도저도 아니면 다 다른 수이니 returnif의 순서가 바뀌면 안 된다.public int 주사위게임2(int a, int b, int c){ if (a == b && b == c && a == c) return (a + b + c) * (a * a + b * b + c * c) * (a * a * a + b * b * b + c * c * c); if (a == b || a == c || b == c) return (a + b + c) * (a * a + b * b + c.. 2024. 6. 3. 수 조작하기 2 (C#) 📌프로그래머스 181925💡풀이for문을 1부터 numLog.Length - 1 까지 돈다.i와 i - 1의 차이로 switch문을 통해 해당 수에 따라 문자를 삽입한다.public string 수조작하기2(int[] numLog){ StringBuilder sb = new StringBuilder(); for(int i = 1; i 2024. 6. 3. 9로 나눈 나머지 (C#) 📌프로그래머스 181914💡풀이문제 자체에 답이 있다. 각 자릿수를 더해서 9로 나눈 나머지를 구하라고 했으니 각 문자를 더한다.9로 나눈 나머지를 반환public int 구로나눈나머지(string number){ int answer = 0; foreach(char c in number) answer += c - '0'; return answer %= 9;} 2024. 6. 3. 접미사 배열 (C#) 📌프로그래머스 181909💡풀이my_String이 담긴 StringBuilder를 만든다.my_String길이만큼의 문자열 배열을 만든다.반복문으로 문자열 배열에 sb를 차례로 담고 담은 뒤, sb의 0번 문자를 제거한다.Sort로 정렬public string[] 접미사배열(string my_string){ StringBuilder sb = new StringBuilder(my_string); string[] strArr = new string[my_string.Length]; for(int i = 0; i 2024. 6. 3. 인덱스 바꾸기 (C#) 📌프로그래머스 120895💡풀이my_String을 담은 StringBuilder를 만든다주어진 인덱스의 sb 문자를 my_String의 다른 인덱스로 교체public string 인덱스바꾸기(string my_string, int num1, int num2){ StringBuilder sb = new StringBuilder(my_string); sb[num1] = my_string[num2]; sb[num2] = my_string[num1]; return sb.ToString();} 2024. 6. 3. 두 수의 합 (C#) 📌프로그래머스 181846💡풀이int.Parse로는 못 푸는 문제. string 길이가 100,000 이하이기 때문에 double을 사용해도 정확한 정수값으로 표현 할 수 없다문자열의 각 인덱스의 문자를 서로 더하는 문제a와 b중 더 긴 길이를 가진 string을 for문의 범위로 설정a[i] + b[i]가 10을 넘겼을 때 10의 자리를 더할 수 있도록 int 변수 하나를 선언for문을 돌 때, a.Length - 1 - i 식을 이용해 가장 뒤인 1의 자리부터 더하는 방식을 사용이 때, 문자열의 길이가 i 보다 작으면 해당 자리수는 없는 것으로 간주해 0을 더함많은수의 문자열 할당이 일어나므로 StringBuilder를 반 필수적으로 사용StringBuilder의 Append는 원하는 수를 역순으.. 2024. 6. 3. 퀵 정렬 (C#) 📌 퀵 정렬(Quick Sort) 이란?퀵 정렬(Quick Sort)은 평균적으로 매우 빠른 실행 속도를 보이는 정렬 알고리즘이다.기본적인 원리는 '분할 정복(divide and conquer)' 전략을 사용하여, 한 번 분할될 때마다 최소한 한 개의 원소(피벗, pivot)가 최종 위치를 찾아가는 것이다.퀵 정렬의 기본 원리:1. 피벗 선택: 배열에서 하나의 원소를 선택한다. 이 원소를 중심으로 배열을 두 부분으로 나눈다.2. 분할: 피벗보다 작은 원소는 피벗의 왼쪽, 큰 원소는 피벗의 오른쪽으로 이동시킨다.3. 재귀적 정렬: 분할을 통해 생성된 두 개의 작은 배열에 대해 재귀적으로 이 과정을 반복한다.퀵 정렬의 성능은 피벗 선택 방법에 크게 의존하며, 최악의 경우 O(n^2)의 시간 복잡도를 가지지.. 2024. 6. 3. 이전 1 2 3 4 5 ··· 16 다음