본문 바로가기
반응형

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

백준 C# - 2089 +) 풀이 풀이 -2진법이란? -2진법에서의 2의 거듭제곱은 사용하는 것처럼 -2진법에서는 -2의 거듭제곱이 사용된다. -7을 예시로 보면 아래와 같이 표현할 수 있다. 그러므로 -2진수를 구하기 위해서는 2진수를 구했던 방법처럼 구하면 된다. 01 n이 0인 경우 처리 if (num == 0) { Console.WriteLine("0"); return; } 02 n을 -2로 나눈 나머지를 구한다. 나머지는 -1,0,1중 하나이다. 그리고 이를 절댓값으로 만든다. 그리고 자릿값을 stringbuilder맨 앞에 넣어준다. int remainder = Math.Abs(num % -2); sb.Insert(0, remainder); 절댓값으로 표시하고 싶지 않은 경우 아래와 같이 작성할 수도 있다. int remain.. 2023. 11. 22.
백준 C# - 1212 +)풀이 비슷한 문제인 2진수를 8진수로 바꾸는 문제를 먼저 풀고 오는 것을 추천한다. 백준 C# - 1373 백준 C# - 1373 +) 풀이 1. 첫번째 방법 2진수를 8진수로 바꾸는 문제여서 간단하게 아래와 같이 풀었다. 이렇게 풀었더니 overflow에러가 떴다.. string num = Console.ReadLine(); string result = Convert.ToString(Convert.ToInt32(num, 2), 8); Conso code-piggy.tistory.com 풀이 위의 문제에서는 3자리수를 8진수로 바꾸었는데 이번에는 반대로 1자리수를 3자리 수로 바꾸면 된다. 01 입력받은 8진수를 2진수로 바꾸기 sb.Append(Convert.ToString(value, 2)); 02 Pad.. 2023. 11. 21.
백준 C# - 1373 +) 풀이 1. 첫번째 방법 2진수를 8진수로 바꾸는 문제여서 간단하게 아래와 같이 풀었다. 이렇게 풀었더니 overflow에러가 떴다.. string num = Console.ReadLine(); string result = Convert.ToString(Convert.ToInt32(num, 2), 8); Console.WriteLine(result); 문제를 다시 일어보니 2진수가 1,000,000까지 입력되니까 생기는 이유같았다. 2. 두번째 방법 아래 그림과 같이 이진수를 3배수로 만들고 3개씩 묶어 8진수로 바꾸면된다. 01 2진수 3배수로 만들기 2진수가 3배수가 아닌 경우 앞에 0을 붙이면서 3배수로 만들기 if (num.Length % 3 != 0) { for (int i = 0; i < 3 - co.. 2023. 11. 21.
백준 C# - 17087 +) 풀이 이 문제를 풀기 앞서 유클리드 호제법에 대해 알아야 한다. 그러므로 밑에 문제를 먼저 푸는 것을 추천한다. 백준 C# - 9613 백준 C# - 9613 +) 풀이 (유클리드 호제법) 문제를 풀기전에 이해 부터 하자 01 문제 잘 읽자 두번째 줄의 첫번째수도 최대 공약수에 포함되어있는지 수인줄 알고 문제 풀다가 최대 공약수가 예제 출력이랑 왜 안맞지..? 최대 공약수 구하 code-piggy.tistory.com 풀이 처음에 반복문 두개를 사용해서 풀었는데 시간 초과 결과가 나왔다. 문제에서 X + D나 X - D로 이동할 수 있다. 라는 부분이 있는데 이는 수빈이의 위치와 동생의 위치가 D로 나누어 떨어진다는 의미이다. 여러 동생들 간의 거리를 D로 나누었을때 나머지가 0이되는 최대의 D를 구해야하는데.. 2023. 11. 20.
백준 C# - 9613 +) 풀이 (유클리드 호제법) 문제를 풀기전에 이해 부터 하자 01 문제 잘 읽자 두번째 줄의 첫번째수도 최대 공약수에 포함되어있는지 수인줄 알고 문제 풀다가 최대 공약수가 예제 출력이랑 왜 안맞지..? 최대 공약수 구하는 방법이 틀렸나 했는데 각 테이스 케이스 개수를 구하는 거였다😂 3 // 전치 테스트 케이스의 개수 4 10 20 30 40 // 맨 앞에 수는 각 테스트 케이스 그러므로 4개의 테스트 케이스 3 7 5 12 3 125 15 25 02 long 사용 N=100이고 모든 수가 100만일때 모든 쌍의 최대공약수 합이 int 값의 범위를 초과하는 경우가 있으므로 long을 사용해야 한다. 문제를 풀다가 반복문이 너무 많이 나와서 뭔가 잘못됐다라는 느낌을 받았다. 그래서 좋은 방법이 없을까 찾아보다가 유클리드 호제법을 찾게.. 2023. 11. 18.
백준 C# - 2004 +) 풀이 문제 풀기를 앞서 아래 문제를 먼저 풀어보는 것을 추천한다. 백준 C# - 1676 백준 C# - 1676 +) 풀이 서론 처음에 풀때 팩토리얼 계산을 이용해서 풀었다. 효율적이지 않은 것 같아서 인터넷을 찾아보니 5와 2의 소인수분해로 풀어야 된다는 것을 알게되었다. 풀이 5의 개수를 구하자 0이 생기는 code-piggy.tistory.com 문제 소개 nCm의 결과에서 끝자리 0의 개수를 출력하는 문제이다. 끝자리가 0인 갯수는 10의 배수를 구하면 된다. 따라서 2와 5의 소인수 갯수중 작은 것을 구하면 답이 된다. 풀이 01 2의 소인수 배수 static long twoCount(long num) { long count = 0; while (num >= 2) { count += num / 2; .. 2023. 11. 6.
반응형