본문 바로가기

전체 글

(76)
[백준/C++] 1193번. 분수찾기 문제 1193번: 분수찾기 첫째 줄에 X(1 ≤ X ≤ 10,000,000)가 주어진다. www.acmicpc.net 1. 첫 번째 풀이 사고 과정 - 대각선이지만 굳이 대각선으로 볼 필욘 없다. 1/1을 한 줄, 1/2와 2/1을 한 줄, 1/3과 2/2와 3/1을 한 줄. 이렇게 계단처럼 쌓을 수 있다. - 우린 각 줄의 첫번째, 즉 1/N이 몇 번째부터 시작하는지 알 수 있다. 1, 2, 4, 7, 11. 정확히는, 해당 줄의 앞이 몇 번으로 끝났는지 알 수 있다. 0, 1, 3, 6, 10, 15, 21. 익숙한 1부터 n까지의 합. 이 번호들을 기준 번호라고 하자. - 그러니 우선 1부터 더해가며, X를 넘지 않는 값까지 더하면, 마지막에 더한 값으로부터 N을 알 수 있다. 만약 12라면 10에..
[백준/C++] 1083번. 소트 문제 1083번: 소트 크기가 N인 배열 A가 있다. 배열에 있는 모든 수는 서로 다르다. 이 배열을 소트할 때, 연속된 두 개의 원소만 교환할 수 있다. 그리고, 교환은 많아봐야 S번 할 수 있다. 이때, 소트한 결과가 사전 www.acmicpc.net 1. 첫 번째 풀이 사고 과정 - 시간 제한은 널널한 편. 배열을 전부 검사해보고 큰 수를 한 칸 전진시켜도 충분한 시간이다. - 예제들로 살펴보면, 앞에서부터 검사하며 뒤의 수가 더 클 때 자리를 교환하면 될 것 같다. - 하지만 굳이 사전순으로 뒷선다고 조건을 건 걸 보면, 배열 내 원소의 자릿수가 다른 경우도 감안해야 할 것 같다. - 자릿수가 같다면 그냥 큰 수를 올리면 된다. 96과 89면 96이 앞서면 된다. 하지만 919와 99라면, 99가..
[C++] 소인수분해: 두 소수 p, q의 곱 n이 주어질 때, p, q 알아내기 이 사람은 왜 이런 짓을 했는가? 시험 기간인데 시험 공부는 하기 싫어서 간단한 알고리즘을 짜봤다. 문제 RSA 알고리즘을 배울 때 꼭 한 번씩 들어보는 말. 두 소수 p, q가 주어졌을 때 n을 계산하는 건 매우 단순한 일이지만, 두 소수의 곱 n이 주어졌을 때 p, q를 알아내는 건 NP 문제다. 그래서 어떻게 하면 n이 주어졌을 때 p, q를 빠르게 알아낼 수 있을까?라는 질문이 샤워 도중 떠올랐고, 샤워하면서 한 생각을 코드로 옮겨봤다. 알고리즘 거창한 문제에 비해 내 생각은 단순했다. twosum 문제를 좀 응용하면 되지 않을까? 정확한 사고 과정은 아래와 같았다. 두 소수 p, q를 곱한 n이 있다면, p와 q는 sqrt(n)에서 비슷하게 떨어져 있지 않을까? 3 * 13, 7 * 13을 해봄..
[Windows Forms] 재시도 횟수(10)를 초과하여 작업을 수행하지 못했습니다. 파일이 ""에 의해 잠겨 있습니다. Windows Forms로 오목 게임을 만들던 중 발생한 오류. 코드 넣지도 않았는데 실행이 안 됐다. 원인 에러 자체는 주로 이미 파일이 실행 중일 때 나오는 오류 같다. ChatGPT의 답변. 보아하니 이미 프로세스가 실행 중일 경우, 해당 프로세스가 파일을 잠궈서 생기는 오류 같다. 해결 방법 우선 가장 간단한 방법은 재부팅이다. 하지만 개발하다가 툭하면 재부팅하는 건 너무 번거롭고, 낭비도 심하다. 작업 관리자에서 exe 파일만 찾아서 끄면 된다는데, 해당 방법은 찾지 못 했다. 그 다음 찾은 방법은 종료 시 모든 리소스를 정리하는 것. 로비와 게임 화면 모두 나갈 수 있어서 둘 다 Dispose를 걸어줬다. 이걸 해도 또 에러가 뜬다면 새로운 방법을 찾아봐야겠다. 뭣하면 재부팅하는 수밖에... ..
[언리얼5.1] 시각 순응 해제하기 어두운 곳을 어둡게 놔둬줘 언리얼로 암실에서 움직이는 예제를 만들어보았으나, 시간이 지나면서 밝아져 결국 밝은 방이 되어버렸다. 내 게임에 이런 기능은 필요없다. 내 방을 암실로 놔둬보자. 원인 각고의 노력(검색) 끝에 이것이 시각 순응(Eye Adaptation) 혹은 자동 노출(Auto Exposure)이라는 걸 깨달았다. 이름을 알았으니 해결은 간단. 이걸 꺼버리면 된다. 해결 방법 1. 프로젝트 세팅 그럼 이걸 어떻게 끌 수 있을까. 우선 프로젝트 전체에서 꺼버리는 방법이다. 편집 - 프로젝트 세팅에 들어간다. 엔진 - 렌더링 - Default Settings 섹션에서 자동 노출을 확인할 수 있다. 체크 해제하자. 드디어 진정한 암실이 완성되었다. 2. PostProcessVolume 다음은 특정..
[MIPS] MIPS 빠르게 적응하기 with Mars V4.5 ※ 해당 글은 Windows에서 Mars 4.5버전으로 하는 MIPS 코딩을 다룹니다. 서문 이번 학기에 컴퓨터구조를 배우며 MIPS로 코딩할 기회가 생겼다. 교수님이 제시해준 사이트를 따라 Mars4_5.jar를 다운받고, 자바 SE도 다운받아 코딩을 시작했다. MIPS Assembly Programming Simplified Whether you are preparing for a course on Assembly language or you are just interested in learning Assembly, this tutorial series will guide you step by step... www.youtube.com 위 강의를 보며 공부 중인데, 매우 기본적인 부분들은 생략하고 진..
[언리얼5] 오브젝트/스크립트 생성 게임 제작의 첫걸음. 액터 생성과 C++ 스크립트 생성을 정리해보자. 연결에 대해선 다음 포스팅에서 다루겠다. 용어 우선 언리얼에서 사용하는 용어를 짚고 넘어가보자. 유니티와 미묘하게 달라서 정리해두는 게 좋다. 액터 오브젝트 중 화면에 배치되는 것들을 뜻한다. 유니티로 따지면 Transform을 갖는 오브젝트. 클래스 유니티의 스크립트. 특정 액터나 오브젝트의 행동을 정의한다. C++나 블루프린트로 생성된다. 레벨 유니티의 씬. 오브젝트가 배치되고 게임이 돌아가는 하나의 화면, 맵을 뜻한다. 뷰포트 유니티의 씬 뷰. 화면의 왼쪽에서 오브젝트의 배치 현황을 살펴보고, 또 배치할 수 있는 공간을 뜻한다. 콘텐츠 브라우저 유니티의 프로젝트 창(에셋 폴더). 다양한 에셋이 저장된다. 언리얼5 기본 레이아웃에선..
[Unity] UI 순서 우선순위 문제 인벤토리 구현 도중, 우선순위와 관련한 문제와 맞닥뜨렸다. 그냥 오브젝트였다면 Sorting Layer를 조절해 해결했겠지만, UI의 Image 컴포넌트엔 그런 게 없었다. 아래 방법을 시도해봤으나 실패했고, 다양한 시도를 하며 해결법을 공유하려 한다. z축 조절 Layer 변경 결론만 빠르게 보고 싶다면 스크롤을 내려 결론 탭을 찾아가면 좋다. 환경 우선 문제 발생 당시 인벤토리 환경은 다음과 같았다. 하나의 캔버스 내에 인벤토리에 Grid Layout Group을 넣고, 그 아래 슬롯 오브젝트를 30개 배치했다. 모두 같은 오브젝트며, 슬롯은 아이콘을 띄울 Slot Item과 상세정보를 띄울 Info가 순서대로 배치돼있다. Info는 Slot의 자식 오브젝트이기에 캔버스를 분리할 순 없었다. 시..