코딩 테스트/BOJ 24

C# 2581 소수

처음에 소수는 1보다 커야한다는 것을 간과해서 틀렸는데 그 부분을 고려해서 다시 작성했다 using System; using System.Collections.Generic; using System.Linq; namespace _2581 { class Program { static void Main(string[] args) { //소수는 1보다 커야 한다 int m = int.Parse(Console.ReadLine()); int n = int.Parse(Console.ReadLine()); List decimalNums = new List(); if (m > n) Console.WriteLine(-1); else { if (m == 1) m = m + 1; for (int i = m; i

C# 10162 전자레인지

만약 입력값 T가 C에 설정된 10으로 나누어 떨어지지 않으면 바로 -1 출력 그렇지 않으면(T가 10으로 나누어 떨어지면) 반복문을 통해서 각 버튼 A, B, C를 누르는 횟수의 모든 경우 i, j, k에 대해서 i*300+j*60+k*10==T가 되는 i, j, k와 countSum(i + j + k)을 구해서 구조체 리스트에 담고 countSum의 최솟값을 기억하는 과정을 반복한다 이때 반복하는 횟수는 T/각 버튼에 설정된 시간이다 (0부터 최대로 누르는 횟수까지 검사) 단, i, j, k가 0일 경우 반복 조건을

C# 2231 분해합

문제 어떤 자연수 N이 있을 때, 그 자연수 N의 분해합은 N과 N을 이루는 각 자리수의 합을 의미한다. 어떤 자연수 M의 분해합이 N인 경우, M을 N의 생성자라 한다. 예를 들어, 245의 분해합은 256(=245+2+4+5)이 된다. 따라서 245는 256의 생성자가 된다. 물론, 어떤 자연수의 경우에는 생성자가 없을 수도 있다. 반대로, 생성자가 여러 개인 자연수도 있을 수 있다. 자연수 N이 주어졌을 때, N의 가장 작은 생성자를 구해내는 프로그램을 작성하시오. 입력 첫째 줄에 자연수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 출력 첫째 줄에 답을 출력한다. 생성자가 없는 경우에는 0을 출력한다. 예제 입력 1 216 예제 출력 1 198 자연수 N을 입력 받고 N의 가장 작은 생성자 M..

C# 1654 랜선 자르기(틀림)

아래 참고한 블로그랑 똑같이 작성한 것 같은데 계속 틀렸다고 나온다 처음에 int 타입으로 변수 정의한 것 때문에 오버플로우로 틀린 것 같아서 uint, long 다 해봤는데도 틀렸다고 나온다 체크 못한 부분이 있는 것 같다 using System; using System.IO; using System.Linq; namespace _1654 { class Program { static void Main(string[] args) { StreamReader sr = new StreamReader(Console.OpenStandardInput()); StreamWriter sw = new StreamWriter(Console.OpenStandardOutput()); int[] kn = Array.Conver..

C# 2003 수들의 합2

투포인터 알고리즘 순차적으로 접근해야 할 때 두 개의 점(시작점과 끝점)의 위치를 기록하며 처리하는 알고리즘 1. 시작점과 끝점이 첫번째 원소의 인덱스를 가리키도록 한다 2. 현재 부분 합이 m과 같다면 카운트한다 3. 현재 부분 합이 m보다 작다면 end를 1 증가시킨다 4. 현재 부분합이 m보다 크거나 같다면 start를 1 증가시킨다 5. 모든 경우를 확인할 때까지 2번부터 4번까지의 과정을 반복한다 using System; namespace _2003 { class Program { static void Main(string[] args) { //수열의 크기 n, 경우의 수를 구할 합 m int[] nm = Array.ConvertAll(Console.ReadLine().Split(' '),int..

C# 2979 트럭 주차

처음에 트럭이 주차장에 있을 수 있는 경우의 수를 고려해서 너무 복잡하고 어려웠는데 다른 블로그 참고해서 생각을 정리할 수 있었다 배열을 저렇게 많이 만들어도 되나 싶긴한데 제출하면 맞았다고 나온다 using System; using System.Linq; namespace _2979 { class Program { static void Main(string[] args) { //비용 입력받기 int[] costs = Array.ConvertAll(Console.ReadLine().Split(' '), int.Parse); //트럭 출입 시간 입력받기 int[] truck0= Array.ConvertAll(Console.ReadLine().Split(' '), int.Parse); int[] truck1..

C# 1439 뒤집기

연속된 하나 이상의 숫자를 뒤집어서 모든 값을 통일한다 문자열 S={0001100}에서 S[0]==S[1] S[1]==S[2] S[2]!=S[3] S[3]==S[4] S[4]!=S[5] S[5]==S[6] S[0]부터S[2]의 값, S[5]부터 S[6]의 값이 0으로 같고, S[3]부터 S[4]의 값이 1로 같다 따라서 S[3]부터 S[4]의 값을 1번 뒤집는 것이 최소로 뒤집는 횟수이다 문제에서 나온 다른 예시들도 위의 과정처럼 하나씩 생각하다가 최소로 뒤집는 횟수의 규칙을 발견했는데 값이 다른 횟수/2를 올림한 것이 최소로 뒤집는 횟수이다 using System; using System.Collections.Generic; using System.Linq; namespace _1439 { class ..

C# 5585 거스름돈

거스름돈의 단위를 배열에 저장하고 그 단위의 종류만큼 반복해서 나눠서 몫(그 단위 거스름 돈의 개수)과 나머지(다음 단위 거스름돈으로 나눌 돈)를 구하도록 했다 몫을 누적해서 더해야 총 거스름돈의 개수를 구할 수 있다 using System; using System.Collections.Generic; using System.Linq; namespace _5585 { class Program { static void Main() { int n = int.Parse(Console.ReadLine()); int remainder = 1000 - n; //나머지 저장할 변수 //여기부터 작성 하세요 int[] divisor = { 500, 100, 50, 10, 5, 1 }; int quotient=0; //..

반응형