'C#/Algorithm'에 해당되는 글 13건

  1. 2019.10.16 3052 나머지
  2. 2019.10.15 1546 평균
  3. 2019.10.10 2920 음계
  4. 2019.10.07 10.07 str.Replace( x, y ) 활용
  5. 2019.09.27 더하기 사이클
  6. 2019.09.26 클래식 다이얼
  7. 2019.09.26 돌 게임
  8. 2019.09.25 설탕 배달

3052 나머지

C#/Algorithm 2019. 10. 16. 16:39

문제

두 자연수 A와 B가 있을 때, A%B는 A를 B로 나눈 나머지 이다. 예를 들어, 7, 14, 27, 38을 3으로 나눈 나머지는 1, 2, 0, 2이다. 

수 10개를 입력받은 뒤, 이를 42로 나눈 나머지를 구한다. 그 다음 서로 다른 값이 몇 개 있는지 출력하는 프로그램을 작성하시오.

입력

첫째 줄부터 열번째 줄 까지 숫자가 한 줄에 하나씩 주어진다. 이 숫자는 1,000보다 작거나 같고, 음이 아닌 정수이다.

출력

첫째 줄에, 42로 나누었을 때, 서로 다른 나머지가 몇 개 있는지 출력한다.

예제 입력 1

39 40 41 42 43 44 82 83 84 85

예제 출력 1

6

코드:

 
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace _3052
{
    class Program
    {
        static void Main(string[] args)
        {
            int num42 = 42;
            int[] arr = new int[10];
            for (int i = 0; i < 10; i++)
            {
                arr[i] = Convert.ToInt32(Console.ReadLine());
            }
            List rest = new List();
            for (int i = 0; i < 10; i++)
            {

                if (!rest.Contains(arr[i] % num42))
                {
                    rest.Add(arr[i] % num42);

                }
            }
            Console.WriteLine(rest.Count);
        }
    }
}

 

출력:

'C# > Algorithm' 카테고리의 다른 글

1546 평균  (0) 2019.10.15
2920 음계  (0) 2019.10.10
10.07 str.Replace( x, y ) 활용  (0) 2019.10.07
더하기 사이클  (0) 2019.09.27
클래식 다이얼  (0) 2019.09.26
:

1546 평균

C#/Algorithm 2019. 10. 15. 17:17

문제

세준이는 기말고사를 망쳤다. 세준이는 점수를 조작해서 집에 가져가기로 했다. 일단 세준이는 자기 점수 중에 최댓값을 골랐다. 이 값을 M이라고 한다. 그리고 나서 모든 점수를 점수/M*100으로 고쳤다.

예를 들어, 세준이의 최고점이 70이고, 수학점수가 50이었으면 수학점수는 50/70*100이 되어 71.43점이 된다.

세준이의 성적을 위의 방법대로 새로 계산했을 때, 새로운 평균을 구하는 프로그램을 작성하시오.

입력

첫째 줄에 시험 본 과목의 개수 N이 주어진다. 이 값은 1000보다 작거나 같다. 둘째 줄에 세준이의 현재 성적이 주어진다. 이 값은 100보다 작거나 같은 음이 아닌 정수이고, 적어도 하나의 값은 0보다 크다.

출력

첫째 줄에 새로운 평균을 출력한다. 정답과의 절대/상대 오차는 10-2까지 허용한다.

예제 입력 1

3 40 80 60

예제 출력 1

75.00

예제 입력 2

3 10 20 30

예제 출력 2

66.666667

예제 입력 3

4 1 100 100 100

예제 출력 3

75.25

예제 입력 4

5 1 2 4 8 16

예제 출력 4

38.75

코드:

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace _1546
{
    class Program
    {
        static void Main(string[] args)
        {
            int index = 0;
            double max = 0;
            double sum=0;
            int strInput = Convert.ToInt32(Console.ReadLine());
            double[] arrInt = new double[strInput];
            string strInput2 = Console.ReadLine();
            foreach (string i in strInput2.Split(' '))
            {
                arrInt[index] = (Convert.ToInt32(i));
                index++;
            }
            for (int i = 0; i < arrInt.Length; i++)
            {
                if( max < arrInt[i])
                {
                    max = arrInt[i];
                }
            }
            for(int i=0; i

'C# > Algorithm' 카테고리의 다른 글

3052 나머지  (0) 2019.10.16
2920 음계  (0) 2019.10.10
10.07 str.Replace( x, y ) 활용  (0) 2019.10.07
더하기 사이클  (0) 2019.09.27
클래식 다이얼  (0) 2019.09.26
:

2920 음계

C#/Algorithm 2019. 10. 10. 13:28

문제

다장조는 c d e f g a b C, 총 8개 음으로 이루어져있다. 이 문제에서 8개 음은 다음과 같이 숫자로 바꾸어 표현한다. c는 1로, d는 2로, ..., C를 8로 바꾼다.

1부터 8까지 차례대로 연주한다면 ascending, 8부터 1까지 차례대로 연주한다면 descending, 둘 다 아니라면 mixed 이다.

연주한 순서가 주어졌을 때, 이것이 ascending인지, descending인지, 아니면 mixed인지 판별하는 프로그램을 작성하시오.

입력

첫째 줄에 8개 숫자가 주어진다. 이 숫자는 문제 설명에서 설명한 음이며, 1부터 8까지 숫자가 한 번씩 등장한다.

출력

첫째 줄에 ascending, descending, mixed 중 하나를 출력한다.

예제 입력 1

1 2 3 4 5 6 7 8

예제 출력 1

ascending

예제 입력 2

8 7 6 5 4 3 2 1

예제 출력 2

descending

예제 입력 3

8 1 7 2 6 3 5 4

예제 출력 3

mixed

코드:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace _2920
{
    class Program
    {
        static void Main(string[] args)
        {
            string[] strarr = new string[8];
            int[] intarr = new int[8];
            string input = Console.ReadLine();
            strarr = input.Split(' ');
            string result = null;
 
            for (int i =0; i<strarr.Length;i++)
            {
                intarr[i] = Convert.ToInt32(strarr[i]);
            }
            for (int i=0; i<intarr.Length-2; i++)
            {
                if(intarr[i] - intarr[i + 1== intarr[i + 1- intarr[i + 2])
                {
                    if (intarr[i] - intarr[i + 1== 1)
                    {
                        result = "descending";
                        continue;
                    }
                    else if (intarr[i] - intarr[i + 1== -1)
                    {
                        result = "ascending";
                        continue;
                    }
                }
                
                else if (intarr[i] - intarr[i+1!= intarr[i+1- intarr[i+2])
                {
                    result = "mixed";
                    break;
                }                               
            }
            Console.WriteLine(result);
        }
    }
}
 
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4ftext-decoration:none">Colored by Color Scripter
 

 

'C# > Algorithm' 카테고리의 다른 글

3052 나머지  (0) 2019.10.16
1546 평균  (0) 2019.10.15
10.07 str.Replace( x, y ) 활용  (0) 2019.10.07
더하기 사이클  (0) 2019.09.27
클래식 다이얼  (0) 2019.09.26
:

10.07 str.Replace( x, y ) 활용

C#/Algorithm 2019. 10. 7. 17:07

코드:

1
2
3
4
5
6
7
8
9
class Program
    {
        static void Main(string[] args)
        {
            string str = Console.ReadLine();
            string str2 = str.Replace(".""[.]");
            Console.WriteLine(str2);
        }
    }
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4ftext-decoration:none">Colored by Color Scripter
 

'C# > Algorithm' 카테고리의 다른 글

1546 평균  (0) 2019.10.15
2920 음계  (0) 2019.10.10
더하기 사이클  (0) 2019.09.27
클래식 다이얼  (0) 2019.09.26
돌 게임  (0) 2019.09.26
:

더하기 사이클

C#/Algorithm 2019. 9. 27. 09:34

문제

0보다 크거나 같고, 99보다 작거나 같은 정수가 주어질 때 다음과 같은 연산을 할 수 있다. 먼저 주어진 수가 10보다 작다면 앞에 0을 붙여 두 자리 수로 만들고, 각 자리의 숫자를 더한다. 그 다음, 주어진 수의 가장 오른쪽 자리 수와 앞에서 구한 합의 가장 오른쪽 자리 수를 이어 붙이면 새로운 수를 만들 수 있다. 다음 예를 보자.

26부터 시작한다. 2+6 = 8이다. 새로운 수는 68이다. 6+8 = 14이다. 새로운 수는 84이다. 8+4 = 12이다. 새로운 수는 42이다. 4+2 = 6이다. 새로운 수는 26이다.

위의 예는 4번만에 원래 수로 돌아올 수 있다. 따라서 26의 사이클의 길이는 4이다.

N이 주어졌을 때, N의 사이클의 길이를 구하는 프로그램을 작성하시오.

입력

첫째 줄에 N이 주어진다. N은 0보다 크거나 같고, 99보다 작거나 같은 정수이다.

출력

첫째 줄에 N의 사이클 길이를 출력한다.

예제 입력 1

26

예제 출력 1

4

예제 입력 2

55

예제 출력 2

3

예제 입력 3

1

예제 출력 3

60

코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace _1110
{
    class Program
    {
        static void Main(string[] args)
        {
            string N = Console.ReadLine();
            string fN = N;
            int count = 0;
            if (N.Length < 3 && N.Length > 1)
            {
                while (true)
                {
                    string stra = Convert.ToString(N[0]);
                    int a = Convert.ToInt32(stra);
                    string strb = Convert.ToString(N[1]);
                    int b = Convert.ToInt32(strb);
                    if (a + b < 10)
                    {
                        N = b + Convert.ToString(a + b);
                        count++;
                    }
                    else if (a + b >= 10)
                    {
                        string sum = Convert.ToString(a + b);
                        N = Convert.ToString(b) + sum[1];
                        count++;
                    }
                    if (N == fN)
                    {
                        break;
                    }
                }
                Console.WriteLine(count);
            }
            else if (N.Length == 1)
            {
                N = "0" + N;
                while (true)
                {                    
                    string stra = Convert.ToString(N[0]);
                    int a = Convert.ToInt32(stra);
                    string strb = Convert.ToString(N[1]);
                    int b = Convert.ToInt32(strb);
                    if (a + b < 10)
                    {
                        N = b + Convert.ToString(a + b);
                        count++;
                    }
                    else if (a + b >= 10)
                    {
                        string sum = Convert.ToString(a + b);
                        N = Convert.ToString(b) + sum[1];
                        count++;
                    }
                    if (N == "0" + fN)
                    {
                        break;
                    }
                }
                Console.WriteLine(count);
            }
        }
    }
}
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4ftext-decoration:none">Colored by Color Scripter
 

나같은 경우에는 input 값(string)을 int 값으로 한 글자씩 분리 변환하는 과정에서

저장된 input값을 배열을 이용해 각각 한글자씩 char 형태로 분리 --> char 형태의 각각의 글자를 string 형태로 변환 --> 다시 int 값으로 변환해서 식의 값을 구했다. 

함수 식 자체는 어렵지는 않지만 유저의 input값을 숫자형태, 문자열 형태로 자주 바꿔야했다. 

char 형태의 문자열 각각의 문자를 int 로 바꾸는 과정에는 중간에 string 형태로 변환하고나서 int로 변환 해야한다는 사실을 간과해 시간이 조금 걸렸던 문제이다.

(char '1' --> string '1' --> int 1)

하지만 나중에 조사해 본 결과 input 자체를 int로 받고 input / 10 과 input % 10 을 통해 1의 자리 숫자와 10의 자리 숫자를 분리 해서 식을 세우면 코드가 훨씬 짧아진다는 사실을 알았다. 이 방법의 장점은 input이 10보다 작을때 앞에 0을 붙여주는 과정을 생략할 수 있다는 것이다.

참조: https://www.acmicpc.net/problem/1110

'C# > Algorithm' 카테고리의 다른 글

2920 음계  (0) 2019.10.10
10.07 str.Replace( x, y ) 활용  (0) 2019.10.07
클래식 다이얼  (0) 2019.09.26
돌 게임  (0) 2019.09.26
설탕 배달  (0) 2019.09.25
:

클래식 다이얼

C#/Algorithm 2019. 9. 26. 13:10

문제

상근이의 할머니는 아래 그림과 같이 오래된 다이얼 전화기를 사용한다.

전화를 걸고 싶은 번호가 있다면, 숫자를 하나를 누른 다음에 금속 핀이 있는 곳 까지 시계방향으로 돌려야 한다. 숫자를 하나 누르면 다이얼이 처음 위치로 돌아가고, 다음 숫자를 누르려면 다이얼을 처음 위치에서 다시 돌려야 한다.

숫자 1을 걸려면 총 2초가 필요하다. 1보다 큰 수를 거는데 걸리는 시간은 이보다 더 걸리며, 한 칸 옆에 있는 숫자를 걸기 위해선 1초씩 더 걸린다.

상근이의 할머니는 전화 번호를 각 숫자에 해당하는 문자로 외운다. 즉, 어떤 단어를 걸 때, 각 알파벳에 해당하는 숫자를 걸면 된다. 예를 들어, UNUCIC는 868242와 같다.

할머니가 외운 단어가 주어졌을 때, 이 전화를 걸기 위해서 필요한 시간을 구하는 프로그램을 작성하시오.

입력

첫째 줄에 알파벳 대문자로 이루어진 단어가 주어진다. 단어는 2글자~15글자로 이루어져 있다.

출력

첫째 줄에 다이얼을 걸기 위해서 필요한 시간을 출력한다.

예제 입력 1 복사

UNUCIC

예제 출력 1 복사

36

코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace _5622
{
    class Program
    {
        static void Main(string[] args)
        {
            string input = Console.ReadLine();            
            int sum = 0;
 
            for (int i = 0; i<input.Length; i++)
            {
                if (input[i] == 'A' || input[i]=='B'||input[i]=='C')
                {
                    sum = sum + 3;
                }
                else if (input[i] == 'D' || input[i] == 'E' || input[i] == 'F')
                {
                    sum = sum + 4;
                }
                else if (input[i] == 'G' || input[i] == 'H' || input[i] == 'I')
                {
                    sum = sum + 5;
                }
                else if (input[i] == 'J' || input[i] == 'K' || input[i] == 'L')
                {
                    sum = sum + 6;
                }
                else if (input[i] == 'M' || input[i] == 'N' || input[i] == 'O')
                {
                    sum = sum + 7;
                }
                else if (input[i] == 'P' || input[i] == 'Q' || input[i] == 'R' || input[i] == 'S')
                {
                    sum = sum + 8;
                }
                else if (input[i] == 'T' || input[i] == 'U' || input[i] == 'V')
                {
                    sum = sum + 9;
                }
                else if (input[i] == 'W' || input[i] == 'X' || input[i] == 'Y' || input[i] == 'Z')
                {
                    sum = sum + 10;
                }
            }
            Console.WriteLine(sum);
        }
    }
}
 
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4ftext-decoration:none">Colored by Color Scripter
 

 

'C# > Algorithm' 카테고리의 다른 글

10.07 str.Replace( x, y ) 활용  (0) 2019.10.07
더하기 사이클  (0) 2019.09.27
돌 게임  (0) 2019.09.26
설탕 배달  (0) 2019.09.25
세 수  (0) 2019.09.25
:

돌 게임

C#/Algorithm 2019. 9. 26. 13:08

문제

돌 게임은 두 명이서 즐기는 재밌는 게임이다.

탁자 위에 돌 N개가 있다. 상근이와 창영이는 턴을 번갈아가면서 돌을 가져가며, 돌은 1개 또는 3개 가져갈 수 있다. 마지막 돌을 가져가는 사람이 게임을 이기게 된다.

두 사람이 완벽하게 게임을 했을 때, 이기는 사람을 구하는 프로그램을 작성하시오. 게임은 상근이가 먼저 시작한다.

입력

첫째 줄에 N이 주어진다. (1 ≤ N ≤ 1000)

출력

상근이가 게임을 이기면 SK를, 창영이가 게임을 이기면 CY을 출력한다.

예제 입력 1

5

예제 출력 1

SK

코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace _9655
{
    class Program
    {
        static void Main(string[] args)
        {
            int input = Convert.ToInt32(Console.ReadLine());
            if (input % 2 == 0)
            {
                Console.WriteLine("CY");
            }
            else
            {
                Console.WriteLine("SK");
            }
        }
    }
}
 
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4ftext-decoration:none">Colored by Color Scripter
 

'C# > Algorithm' 카테고리의 다른 글

더하기 사이클  (0) 2019.09.27
클래식 다이얼  (0) 2019.09.26
설탕 배달  (0) 2019.09.25
세 수  (0) 2019.09.25
알람시계  (0) 2019.09.25
:

설탕 배달

C#/Algorithm 2019. 9. 25. 16:20

문제

상근이는 요즘 설탕공장에서 설탕을 배달하고 있다. 상근이는 지금 사탕가게에 설탕을 정확하게 N킬로그램을 배달해야 한다. 설탕공장에서 만드는 설탕은 봉지에 담겨져 있다. 봉지는 3킬로그램 봉지와 5킬로그램 봉지가 있다.

상근이는 귀찮기 때문에, 최대한 적은 봉지를 들고 가려고 한다. 예를 들어, 18킬로그램 설탕을 배달해야 할 때, 3킬로그램 봉지 6개를 가져가도 되지만, 5킬로그램 3개와 3킬로그램 1개를 배달하면, 더 적은 개수의 봉지를 배달할 수 있다.

상근이가 설탕을 정확하게 N킬로그램 배달해야 할 때, 봉지 몇 개를 가져가면 되는지 그 수를 구하는 프로그램을 작성하시오.

입력

첫째 줄에 N이 주어진다. (3 ≤ N ≤ 5000)

출력

상근이가 배달하는 봉지의 최소 개수를 출력한다. 만약, 정확하게 N킬로그램을 만들 수 없다면 -1을 출력한다.

예제 입력 1

18

예제 출력 1

4

예제 입력 2

4

예제 출력 2

-1

예제 입력 3

6

예제 출력 3

2

예제 입력 4

9

예제 출력 4

3

예제 입력 5

11

예제 출력 5

3

코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace _09._25_step3
{
    class Program
    {
        static void Main(string[] args)
        {                      
            int N = Convert.ToInt32(Console.ReadLine());
            int sum = 0;                       
            if ( N % 5 == 0
            {
                sum = N / 5;
                Console.Write(sum);
 
                }
                else 
            {
                if ((N % 5) % 3 == 0
                {
                    sum = (N / 5+ ((N % 5/ 3); 
                    Console.Write(sum);
 
                    }
                    else  
                {
                    for (int i =0; i <= N/5; i++
                    {
                        if((N - (5 * ((N / 5- i))) % 3 != 0 ) 
                        {
                            if (N/5 - i == 0)
                            {
                                Console.WriteLine(-1);
                            }
                            else 
                            {
                                continue;
                            }
                                                  
                        }
                        
                        else if ((N - (5 * ((N / 5- i))) % 3 == 0)
                        {
                            sum = ((N / 5- i) + ((N-(5*((N / 5- i))) / 3);
                            Console.Write(sum);
 
                                break;
                        }                                                
                    }                    
                }
            }            
        }
    }
}
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4ftext-decoration:none">Colored by Color Scripter
 

'C# > Algorithm' 카테고리의 다른 글

클래식 다이얼  (0) 2019.09.26
돌 게임  (0) 2019.09.26
세 수  (0) 2019.09.25
알람시계  (0) 2019.09.25
윤년  (0) 2019.09.25
: