본문 바로가기
반응형

코딩테스트 준비/백준 C#161

백준 C# - 1463 +) 풀이 DP를 이용해서 풀어야한다. DP알아보러 가기 C# - 다이나믹 프로그래밍(DP) 다이나믹 프로그래밍 메모리를 적절히 사용하여 수행 시간 효율성을 향상 시키는 최적화 기법중 하나이다. 큰 문제를 작은 부분 문제로 나누어 해결하며 이미 계산된 작은 문제의 결과를 메모 code-piggy.tistory.com 풀이 DP의 점화식을 구해보자 dp[i] = dp[i - 1] + 1 // 1을 빼는 경우 dp[i] = min(dp[i], dp[i / 2] + 1) // 2로 나누는 경우 dp[i] = min(dp[i], dp[i / 3] + 1) // 3으로 나누는 경우 왜 점화식 끝에 1을 더해요? dp[i]는 i를 1로 만들기 위해 필요한 최소 연산 횟수를 나타내므로 각각의 연산이 수행될때마다 count하는 .. 2023. 11. 27.
백준 C# - 11653 소인수 개념만 알면 금방 풀 수 있는 문제이다. 코드 전문 using System; namespace baek2 { class Program { static void Main(string[] args) { int n = int.Parse(Console.ReadLine()); int a = 2; for(int i = 0; i 2023. 11. 27.
백준 C# - 11576 +)풀이 문제를 푸는 시간보다 문제를 이해하는 시간이 더 오래 걸린 문제였다. 예제를 이용해서 문제를 이해해보자 17 8 2 2 16 01 첫 줄 17은 진법 A, 8은 진법 B이다. 02 두번째 줄 입력에 나오는 설명은 A진법으로 나타낸 숫자의 자리수의 개수 m이라고 하는데 무슨 말인지 이해가 안갔다. 그냥 간단하게 변환해야할 숫자의 개수이다. 03 세번째 줄 두번째 줄에서 변화해야할 수의 갯수를 받았으니까 해당 하는 수들이다. 풀이 01 A진법을 10진수로 변환 string[] token = Console.ReadLine().Split(); int a = int.Parse(token[0]); int b = int.Parse(token[1]); int m = int.Parse(Console.ReadLine()).. 2023. 11. 27.
백준 C# - 17103 +) 풀이 이 문제를 알기 앞서 에라토스테네스의 체를 알아야 한다. 그래서 아래 문제를 먼저 풀고 오는 것을 추천한다. 백준 C# - 1929 백준 C# - 1929 +) 에라토스테네스의 체 풀이 처음에 1978과 같은 형식으로 문제를 풀었는데 계속 시간초과가 나왔다. 백준 C# - 1978 +) 풀이 풀이 소수 찾기 문제이다. 소수는 1과 자기 자신 만을 약수로 가지는 수이다. 01 1은 소수가 아니 code-piggy.tistory.com 01 에라토스테네스의 체 위의 링크에 에로트세테스의 체에 관련된 설명을 확인할 수 있다. bool[] isPrime = Enumerable.Repeat(true, 1000000 + 1).ToArray(); for (int i = 2; i * i 2023. 11. 26.
백준 C# - 2745 +)풀이 풀이 주어진 N이 숫자인지 문자인지 나누어서 자릿수를 계산한다. 01 숫자인 경우 if (char.IsDigit(n[i])) { digit = int.Parse(n[i].ToString()); } 02 문자인 경우 else { digit = (int)n[i] - 55; } 03 현재 자릿수의 지수 계산을 하고 자릿수 값을 곱한다. answer += Math.Pow(b, n.Length - 1 - i) * digit; 예제 GJDGXS 36 정답 1000000000 과정 코드 전문 using System; namespace baek2 { class Program { static void Main(string[] args) { string[] token = Console.ReadLine().Split(); .. 2023. 11. 23.
백준 C# - 11005 +)풀이 풀이 나머지가 9보다 큰 경우와 작은경우를 나누어서 풀면 된다. 01 나머지가 9보다 경우 ASCII값을 사용하여 나머지를 해당 문자로 변환한다. if(n % b > 9) { char a = (char)((n % b) + 55); sb.Insert(0,a); } 02 나머지가 9보다 작은 경우 숫자 그대로 사용하면 된다. else sb.Insert(0,n % b); 03 sb.Inset(0,숫자)를 사용하는 이유 문자열 인덱스0에 해당 숫자를 추가한다는 의미이다. 그러므로 결과를 거꾸로 저장할 수 있다. 예를들어 345를 16진수로 변환한다고 가정해보자 1) 345 % 16 = 21 ... 9 2) 21 % 16 = 1 ... 5 3) 1 % 16 = 0 ... 1 이다. 만약 Insert를 사용하지 않.. 2023. 11. 22.
반응형