전체 글 102

백준 3190번 - 뱀

백준 3190번 - 뱀 https://www.acmicpc.net/problem/3190 문제 Snake류 게임 시뮬레이션 뱀은 좌회전, 우회전 가능 뱀이 이동할 위치에 사과가 있으면 뱀의 길이가 늘어남 뱀이 벽에 부딪히거나 자신의 몸에 부딪히면 게임 종료 입력 보드의 크기 N (2 ≤ N ≤ 100) 사과의 개수 K (0 ≤ K ≤ 100) K개의 줄에는 사과의 위치 (행,열) 뱀의 방향 변환 횟수 L (1 ≤ L ≤ 100) 뱀의 방향 변환 정보 (X초가 끝난 뒤에 왼쪽(C가 'L') 또는 오른쪽(C가 'D')로 90도 방향을 회전) X는 10,000 이하의 양의 정수이며, 방향 전환 정보는 X가 증가하는 순 출력 첫째 줄에 게임이 몇 초에 끝나는지 출력 접근 1) 뱀이 이동할 위치를 계산한다 2) ..

아카이빙/BOJ 2019.06.18

백준 1946번 - 신입 사원

백준 1946번 - 신입 사원 https://www.acmicpc.net/problem/1946 문제 지원자의 서류심사 성적, 면접 성적의 순위가 주어짐 서류심사의 성적이나 면접 성적이 적어도 다른 합격자들 보다 하나는 높아야 하는 경우, 나올 수 있는 최대 합격자의 수 입력 테스트 케이스의 개수 T(1 ≤ T ≤ 20) 각 테스트 케이스의 첫째 줄에 지원자의 숫자 N(1 ≤ N ≤ 100,000) 둘째 줄부터 N개 줄에는 각각의 지원자의 서류심사 성적, 면접 성적의 순위 두 성적 순위는 모두 1위부터 N위까지 동석차 없이 결정된다고 가정 출력 선발할 수 있는 신입사원의 최대 인원수 접근 서류심사의 성적을 오름차순으로 정렬했을 때, 뒤의 지원자의 서류심사 성적은 무조건 앞의 지원자 보다 낮게 된다. 이 ..

카테고리 없음 2019.06.17

백준 1644번 - 소수의 연속합

백준 1644번 - 소수의 연속합https://www.acmicpc.net/problem/1644 문제2 이상의 자연수가 주어졌을 때,이 자연수를 하나 이상의 연속된 소수의 합으로 나타낼 수 있는 경우의 수예를 들어,41 : 2+3+5+7+11+13 = 11+13+17 = 41 (세 가지) 입력자연수 N (1 ≤ N ≤ 4,000,000) 출력경우의 수 접근에라토스테네스의 체를 활용하여 n 까지의 소수를 미리 구함투 포인터를 활용하여 포인터 2개 사이의 구간합을 구해가며 n가 같음을 확인구간합이 n보다 작으면 우측의 포인터를 증가구간합이 n보다 크거나 같으면 좌측의 포인터를 증가우측의 포인터가 끝에 도달하면 종료C++ Code#include #include #include #include using na..

아카이빙/BOJ 2018.10.21

백준 11778번 - 피보나치 수와 최대공약수

백준 11778번 - 피보나치 수와 최대공약수https://www.acmicpc.net/problem/11778 문제n 번째 피보나치 수와 m 번째 피보나치 수의 최대공약수를 구해보자. 입력n과 mn과 m은 1,000,000,000,000,000,000보다 작거나 같은 자연수 출력n 번째 피보나치 수와 m 번째 피보나치 수의 최대공약수를 1,000,000,007으로 나눈 나머지 접근최대공약수는 유클리드 호제법으로 구한다.GCD(a, b) = GCD(b, a % b)피보나치 수는 수가 매우 크기 때문에 DP로 구하면 시간초과행렬 곱셈을 활용하여 O(log N)의 시간복잡도로 피보나치 수를 구해야한다.C++ Code#include #include #include #include using namespace ..

아카이빙/BOJ 2018.10.21

백준 2143번 - 두 배열의 합

백준 2143번 - 두 배열의 합https://www.acmicpc.net/problem/2143 문제배열 A와 B가 있다.부배열은 배열의 부분 배열이다.A = {1, 3, 1, 2}, B = {1, 3, 2} 인경우, A와 B의 부배열 합이 T인 경우의 수를 모두 찾아라. 입력첫째 줄 : T(-1,000,000,000 ≤ T ≤ 1,000,000,000) 다음 줄 : n(1 ≤ n ≤ 1,000) A[1] 부터 A[n]까지 입력다음 줄 : m(1 ≤ n ≤ 1,000) B[1] 부터 B[n]까지 입력 출력경우의 수를 출력없을 경우 0을 출력 접근A로 만들 수 있는 부배열의 합을 미리 다 구한다.B로 만들 수 있는 부배열의 합을 미리 다 구한다.B를 정렬 (바이너리 서치를 위함)A의 원소를 하나씩 탐색하..

아카이빙/BOJ 2018.10.21

[Effective C#] 불필요한 객체를 만들지 말라

[Effective C#] 불필요한 객체를 만들지 말라가비지 콜렉터는 사용자를 대신하여 메모리를 관리하며 사용하지 않는 객체를 효율적인 방식으로 제거한다그러나 이 작업이 아무리 효율적이더라도 새로운 객체를 생성하고 삭제하는 일은 그렇지 않은 일에 비해 상대적으로 많은 프로세스 시간을 잡아 먹는다따라서 가비지 콜렉터가 과도하게 동작하지 않도록 주의해야 함.1. 자주 사용되는 지역변수를 멤버 변수로 변경using System.Collections; using System.Collections.Generic; using UnityEngine; ​ public class SpriteSetting : System.IDisposable { Vector3 position; Color color; bool flipX;..

아카이빙/C# 2018.08.11

[Effective C#] 박싱과 언박싱을 최소화하라

[Effective C#] 박싱과 언박싱을 최소화하라.NET Framework에서는 모든 타입의 최상위 타입을 참조타입인 System.Object로 정의하고 있다.object는 참조형식이 때문에 힙에 데이터를 할당한다.반면, int나 double은 값 형식이기 때문에 스택에 데이터를 할당하며, 다형적이지 못하다.이 두가지는 양립하는 것 처럼 보이지만 앞서 모든 타입의 최상위 타입은 참조형식인 System.Object를 상속받는다고 했다. 어떻게 그럴 수 있을까?.NET Framework에서는 박싱(Boxing)과 언박싱(Unboxing)이라는 방법을 통해 이 두가지 서로 다른 타입을 이어준다.int firstParam = 5; int secondParam = 10; int thirdParam = 15; ..

아카이빙/C# 2018.06.30

[Effective C#] string.Format()을 보간 문자열로 대체하라

[Effective C#] string.Format()을 보간 문자열로 대체하라C# 6.0에는 보간문자열(Interpolated string)이라는 새로운 기능이 도입되었다.보간문자열이 뭘까? 예시로 살펴보자int a = 5; int b = 13; string str1, str2; ​ // 이랬던 것을 str1 = string.Format("{0} + {1} = {2}", a, b, a + b); Console.WriteLine(str1); ​ // 이렇게 바꾼다 str2 = $"{a} + {b} = {a + b}"; Console.WriteLine(str2);string.Format() 은 직접 출력해보고 눈으로 확인하기 전까지는 코드를 제대로 작성했는지 쉽게 짐작하기 어려운 반면, 보간 문자열은 포맷..

아카이빙/C# 2018.06.30

[CleanCode] 의미있는 이름

[CleanCode] 의미있는 이름의도가 분명히 밝혀라int d; // 경과시간 (단위 : 날짜)이름 d에는 아무 의미도 드러나지 않는다.int elapsedTimeInDays; int daysSinceCreation; int daysSinceModification; int fileAgeInDays;경과 시간이나 날짜라는 느낌을 표현하는 이름이 필요하다 그릇된 정보를 피하라오해를 불러 일으키는 코드는 피하자여러 계정을 그룹으로 묶을 때, 실제 List가 아니라면, accountList라는 명명을 하지 말자.accountGroup, bunchOfAccounts, Accounts 등이 적절하다.서로 비슷한 두 이름을 사용하는 것도 좋지 않다.XYZControllerForEfficientHandlingOfSt..

[C#] LINQ

[C#] LINQLINQ는 데이터 작업에 특화된 C#의 기능이다.LINQ (Language INtegrated Query)의 약어. C#언어에 통합된 데이터 질의(query) 기능쿼리는 기본 적으로 다음과 같은 내용을 포함From : 어떤 데이터 집합에서 찾을 것인가?Where : 어떤 값의 데이터를 찾을 것인가?Select : 어떤 항목을 추출할 것 인가?LINQ 예제예를 들어보자.다음과 같이 키와 이름을 필드로 갖는 Profile 클래스가 있다.class Profile { public string Name {get; set;} public int Height {get; set;} ​ public Profile(string name, int height) { this.Name = name; this.H..

아카이빙/C# 2018.06.26