본문 바로가기
c#/알고리즘

2135 문자열 압축하기 - 어려워..나중에

by Luna_O 2020. 5. 18.

https://www.acmicpc.net/problem/2135

 

2135번: 문자열 압축하기

문제 어떤 문자열에서 특정한 패턴이 반복될 경우, 이를 이용하여 문자열을 좀 더 짧게 나타낼 수도 있다. 이러한 방법을 압축 기법이라고 하는데, 문자열을 압축하기 위한 여러 가지 효율적인 �

www.acmicpc.net

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 _2135
{
    class Program
    {
        static void Main(string[] args)
        {
            var input = Console.ReadLine(); // letsgogogo
            List<char> q = new List<char>();
 
            //중복값....음음.....중복값을 알아야 몇개인지 카운트해서 반환할텐데
 
            for (int i = 0; i < input.Length; i++)
            {
                for (int j = 0; j < input.Length; j++)
                {
                    if (input[i] == input[j] && i != j)
                    {
                        q.Add(input[i]);
                        Console.WriteLine("{0} {1}", input[i], i);  //g o g o g o 이건 따로 나오고 
                        break;
                    }
                }
            }
            var a = q.Distinct(); // 같은 문자를 없애고 고유 문자만 반환
            var b = a.ToArray();
            Console.WriteLine(b);  // go
 
            string c = new string(b);
            Console.WriteLine(c);
            Console.WriteLine(input.Replace(c, "")); //lets
            //중복된 값을 카운트해서 같이 출력해야하는데
 
            var same =
                q
                       .Select((value, index) => new { value, idx = index + 1 })
                       .GroupBy(x => x.value, x => x.idx)
                       .Where(gxs => gxs.Count() > 1);
            var totalCount = q.Count();
            var sameCount = totalCount / same.Count();
            Console.WriteLine(sameCount);
            // Console.WriteLine("{0}{1}({2})", input.Replace(c, ""), sameCount, c);
            // lets3(go)
            //린큐이용헤서 중복자체 문자열이 몇개인지 알고 총 글자 갯수 구해서 총글자 / 중복 문자 갯수
            //6/2 = 3
            //aaaadaaaad
            //input.IndexOf();
        }
    }
}
cs

 

'c# > 알고리즘' 카테고리의 다른 글

1343번 폴리오미노  (0) 2020.06.01
1181 단어 정렬  (0) 2020.05.25
9996번 한국이 그리울 땐 서버에 접속하지  (0) 2020.05.17
9933 민균이의 비밀번호  (0) 2020.05.15
11654 아스키 코드  (0) 2020.05.15