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 |