호우동의 개발일지

Today :

article thumbnail
[C++] 백준 16935 - 배열 돌리기 3
Algorithm/BOJ 2023. 2. 18. 17:02

문제 이해 단계 https://www.acmicpc.net/problem/16935 문제 자체는 배열을 뒤집고 돌리고, 4분할해서 분할끼리 또 돌리고 하는 거라 이해하는 건 간단하다. 로직이 같고 방향이 다른 것으로만 쳐도 구현해야 하는 것만 3개이다. 일단 입력의 제한사항으로는 배열의 크기 NxM이 입력으로 들어오고 각각 N과 M은 100 이하의 짝수이다. 그리고 4 분할할 때의 중심은 N/2, M/2이다. 또 다른 입력으로 주어지는 R은 명령어의 횟수를 뜻한다. 이게 1000개까지 가능하다는 것은 똑같은 입력이 여러 번 들어올 수도 있는 경우도 생각해야 한다는 것이다. 문제 접근 단계 해당 문제가 일반적인 배열 돌리기랑 다른 점은, 정사각형이 아닌 직사각형이라는 것이다. 이건 90도씩 돌릴 때마다 가..

article thumbnail
[C++] 백준/BOJ - 10703 : 유성
Algorithm/BOJ 2023. 2. 17. 13:15

문제 이해 단계 입력으로 행(R)과 열(S)가 정수로 들어오고, 그다음에는 맵의 정보가 문자형으로 들어온다. '. ' 은 공기, 'X'은 유성, '#'은 땅을 의미한다. 여기서 구하라고 하는 것은 X는 X끼리 모두 연결되어 있고 모양이 변하지 않는다고 가정하고, 위에서 아래로 수직으로 떨어진다. 이때, 최초로 유성이 땅에 닿는 시점의 모습을 나타내라는 것이다. 입력이 주어지는 가정은 다음 조건을 따른다. 1. 적어도 한 줄 이상의 공기('. ')가 주어진다. 2. 유성은 무조건 땅 위에서만 존재한다. 3. 유성은 공기 윗줄, 땅은 공기 아랫줄에만 위치한다. 4. R과 S의 범위는 3 ~ 3000 사이 해당 조건을 만족하면서 위를 구현하라는 문제. 문제 접근 단계 언뜻 보기에는 그래프 탐색 문제처럼 보이는..

article thumbnail
[C++] 백준/BOJ - 17128 : 소가 정보섬에 올라온 이유
Algorithm/BOJ 2023. 2. 16. 18:30

문제 이해 단계 https://www.acmicpc.net/problem/17128 입력으로 소의 수 N과 횟수 Q가 주어진다. 그 아랫줄은 소에 붙어있는 스티커의 정보가 n개 들어온다. 그리고 마지막줄에는 스티커를 바꿀 소의 번호를 순서대로 입력한다. 소는 원형을 둥글게 서있고, 소를 선택하면 해당 소의 붙어있는 번호의 -1을 곱한다. 여기서 하는 연산은 모든 가능한 경우의 수에 대해 연속하는 4개의 소의 번호에 적혀있는 수를 곱한다. 그리고 곱한 수들을 모두 더한다. 출력하는 것은 번호를 바꿀 때마다 달라지는 연산의 결과이다. 문제 접근 단계 일단 이 문제에서 핵심이 되는 부분은 4개의 연속된 수라는 점과 소들이 원형 배치되어 있다는 것이다. 위에서 만든 연산식을 계산하는 코드를 만드는 것은 그렇게 ..

article thumbnail
[C++] 백준/BOJ - 21925 : 짝수 팰린드롬 ( 스택 풀이 )
Algorithm/BOJ 2023. 2. 15. 11:34

문제 이해 단계 짝수 팰린드롬이라고 "수열의 길이가 짝수이고 뒤집은 후의 수열과 뒤집기 전의 수열이 동일" 하다고 정의한다. 여기서 동일하다는 것은 순서까지 동일하다는 것이다. 위에 예제를 보면 좀 더 이해하기가 편할 것이다. 입력으로 수열의 길이 N이 주어지고, 짝수개의 원소가 나열될 때, 모든 수열을 나눴을 때 짝수 팰린드롬을 만족하는지 확인한다. 만족한다면 최대 몇 개로 나눌 수 있는지 확인하는 문제 문제 접근 단계 이 문제를 풀기 위해서는 짝수 팰린드롬의 특징부터 알아내야 할 것 같다. 예제 1번에서 나온 답을 보면 (1, 1), (5, 6, 7, 7, 6, 5), (5, 5)인데, 여기서 알 수 있는 특징은 짝수 팰린드롬이 성립하려면, 각 집합을 동일한 길이로 2 등분하였을 때 대칭돼야 한다는 ..

article thumbnail
[C++] 백준/BOJ - 2447 : 별 찍기 10
Algorithm/BOJ 2023. 2. 14. 17:07

문제 이해 단계 https://www.acmicpc.net/problem/2447 들어오는 입력 N은 무조건 3의 거듭제곱수로 들어온다(3,9,27...) 그리고 만들어지는 모양에 있는 맵의 전체 크기는 NxN이라고 한다. 패턴의 형식은 정사각형을 9 등분하여 이를 3으로 나누고.. 어쩌고 저쩌고 해서 하는 것 같은데, 사실 그냥 위에 있는 그림과 예시를 보는 게 빠르다. 사실 이 문제는 패턴을 파악하는 것부터가 문제풀이에 시작이기 때문에 문제 접근 단계에서 설명하겠다. 문제 접근 단계 패턴 특징 알아내기 해당 문제는 편하게도 "재귀적인 패턴으로 별을 찍어보자"라고 말해줘서 재귀를 사용해야 한다는 것을 쉽게 유추할 수 있다. 그럼 재귀함수와 해당 별 찍기 패턴을 어떻게든 엮어서 생각해 보자. 일단 재귀함..

article thumbnail
[Unity 3D] 최적화 관점에서 보는 클래스와 구조체 차이(Class vs Struct)
Unity Study/Concept 2023. 2. 13. 16:48

클래스(Class)와 구조체(Struct)의 차이 Class 참조 형식으로 Heap 영역에 할당 제거될 때 가비지 컬렉터(Garbage Collector)에 의해 수거됨 상속 가능 Struct 값 타입이고 스택(Stack)에 할당됨 함수에서 나갈 때 CLI에 의해 수거됨 상속이 불가능함 프로파일러로 분석 using System.Collections; using System.Collections.Generic; using UnityEngine; public class Assign_Test : MonoBehaviour { public bool triggerClass; public bool triggerStruct; // 클래스 class Test_class { int a; }; // 구조체 struct Te..

article thumbnail
[C++] 백준 21608 - 상어 초등학교 (정렬 활용 풀이)
Algorithm/BOJ 2023. 2. 13. 12:41

문제 이해 단계 https://www.acmicpc.net/problem/21608 자리를 정하는 학생의 번호와 그 학생이 원하는 4명의 학생 번호가 한 줄씩 입력으로 들어온다. 입력 순서가 자리를 정하는 순서이다. 여기서 자리를 정하는 것은 3가지 우선순위가 존재한다. 1. 빈칸 중 자기가 원하는 학생들과 제일 많이 인접한 곳에 위치한다. 2. 1번 조건이 여러 개라면 그중에서 주위에 빈자리가 많은 곳에 위치한다. 3. 1,2번 조건이 여러 개면 작은 행, 작은 열로 자리를 앉는다. 여기서 "인접"이란 말은, 자신의 상하좌우 한 칸에 있으면 인접한 것이다. 이렇게 모두 자리를 앉고, 주위에 자신이 원하는 사람이 얼마나 앉았느냐에 따라 점수를 정한다. 0명 = 0점 1명 = 1점 2명 = 10점 3명 =..

article thumbnail
[Unity 3D] 텍스트 최적화를 위한 2가지 사항 정리
Unity Study/Concept 2023. 2. 12. 19:51

텍스트 아웃라인/쉐도우(Outline/Shadow) 텍스트에 아무런 효과를 안 줬을 때(Outline X, Shadow X) → vertex : 344 아웃라인/쉐도우 (Outline / Shadow) 아웃라인과 쉐도우는 vertex 낭비가 굉장히 심함 아웃라인 > 쉐도우 (아웃라인이 쉐도우보다 낭비가 더 심함) 아웃라인을 적용해 줬을 때 → vertex 2500개 쉐도우 적용해 줬을 때 → vertex 1000개 모바일 게임에서는 한 장면에 vertex의 개수가 10만 개가 넘어가면 유니티 엔진 자체에서 경고가 무수히 날아옴 굉장히 유의해서 사용해야 함 vertex 개수는 항상 신경 써줘야 함 BestFit 입력한 텍스트가 Rect Transfrom(설정해 둔 사각형)에 다 들어올 수 있도록 글자 사이..