백준1676 - 팩토리얼 0의 개수 C#
·
코딩테스트/백준
문제 풀이 이런문제는 그냥 어디에 적으면서 푸는게 최고인것 같다. 출처: https://st-lab.tistory.com/165 팩토리얼을 시행해야할 수가5의 배수일때, 5와 2의 제곱을 카운트 해주면 된다. 5를 예시로 들면 2^3 * 5^1 이다. 따라서 5와 2의 쌍이 1번이므로 0의 개수는 1개이다25를 예시로 들면 2^22 * 5^6이다. 따라서 5와 2의 쌍이 6개이므로 0의 개수는 6개이다. 5일땐 1개, 10일땐 2개, 15일땐 3개, 20일땐 4개, 25일땐 6개, 30일땐 7개이다. 5 /= 5,10 /= 5,15 /= 5, 20 /= 5,25/= 5 + 5 /= 5,30 /= 5 + 6/= 5 따라서 인풋값이 5보다 클때, 인풋값이 5보다 작아질때까지 5로 나눈 값을 전부 더해주면 ..
백준 15829 - Hashing C#
·
코딩테스트/백준
문제50점 받기는 쉽다.하지만 100점은 50개 이상의 문자열을 해결해야하는데, 31^50만 해도 어마어마하게 큰 수가 되어버려 금방 실패한다.풀이은근 쉽다.브론즈2인 이유가 있음.결국 1234567891이라는 수로 mod연산을 해야하는것이므로,숫자 \* 31 ^ i % 1234567891이 연산결과가 되니,미리 31 ^ i부분에 %1234567891 연산을 해주면 해결된다.이후 마지막으로 연산을 한번더 해주면 해결완료답public class Solution { public static void Main(string[] args) { StreamReader sr = new StreamReader(new BufferedStream(Console.OpenStandardInput()))..
백준 1920 - 수 찾기 C#
·
코딩테스트/백준
문제 10만개의 데이터를 연산하여 1초안에 해결해야하는문제로 최대 O(n)의 시간복잡도를 가지는 로직을 작성해야한다. 따라서 2개의 배열을 2중 반복문을 이용해 순회하는것은 O(n^2)이므로 적절치 않음. 해결만능 key value pair로 해결할 수 있는 딕셔너리를 이용해 값을 캐싱해두고 처리하기로 했다. 딕셔너리를 이용해 입력으로 들어오는 A값을 파싱하여 (A[i], true)로 Add이미 들어와있는 경우를 대비해 TryGetValue를 이용함이후 입력으로 들어오는 M값을 배열로 split하여 딕셔너리의 TryGetValue를 이용해 key값이 존재하면 1 아니면 0 출력 궁금증어? 일반 배열이나 리스트로도 할 수 있는거 아니야? 아닙니다. 배열과 리스트는 3이라는 값이 있는지를 찾아야 한다면 순회..
백준 1018 - 체스판 다시 칠하기 C#
·
코딩테스트/백준
문제중요한 부분은 다음과 같다.N * M크기의 직사각형 입력이 주어지고,이 중 중간의 아무부분이나 8 * 8크기만큼 잘라서,WBWBWBWBBWBWBWBW 순서나 BWBWBWBWWBWBWBWB순서로 2줄마다 칠한다는 의미이다.따라서 주어진 입력에서 8 * 8배열을 잘라내어 그 중 2줄마다 B로 시작, W로 시작할때 어느 순서가 가장 적게 체스판을 칠하면 되는지 구하면 되는것이다.풀이과정기본적으로 완전탐색으로 88크기로 쪼개면서 모든 경우의 수를 따져보면 되는 문제이다. 먼저 리스트에 N만큼을 루프돌리며 들어오는 문자열을 저장리스트를 전체 순회하며 i ~ i+8번째 인덱스의 문자열을 이용해 8칸짜리 배열의 각 인덱스에 0-8, 1-9, 2-10처럼 idxCount ~ idxCount + 8만큼 8자리의 문자..
백준 11723 - 집합 C#
·
코딩테스트/백준
실버 5문제인데, 정답률이 굉장히 낮아서 직접 풀어보기로 한 문제! 간단하다.. list로 remove하거나, 배열으로 풀면 될것같다... 라고 생각하던 찰나에 든 생각 이거 remove하면 안될거같은데? 일단 연산수가 300만개이다. 분명 remove는 O(n)의 복잡도라, 첫번째의 값이 계속 빠지고 들어가고 빠지고 들어가고 하면 메모리 오버 혹은 시간제한 오버가 될것같았다. 그래서 곰곰히 생각해보니 딕셔너리로 미리 1~20까지의 값을 false로 지정해두고,들어오는 값은 true로, 빠지는 값은 false로 변경하며 하면 O(1)의 복잡도로 모든걸 처리할 수 있다고 생각했다. all이나 empty는 무조건 20번의 연산이니, O(20)이라 빅오표기법에서는 O(1)이 되므로, 무시할만 하다고도 생각..
비동기 호출의 끝나는 시간에 맞춰 일괄 메서드 호출하기?
·
유니티/유니티 스킬
문제상황이런상황이었다.팝업 UI는 Addressable로 지정되어있다.총괄 @Managers에서 Init(게임시작)이 되면public void LoadAsync(string key, Action callback = null) where T : Object{ if (_resources.TryGetValue(key, out Object resource)) { callback?.Invoke(resource as T); return; } AsyncOperationHandle asyncOperation = Addressables.LoadAssetAsync(key); asyncOperation.Completed += oper => { _resou..