- 큰 수 만들기
-
darklight
sublimevimemacs
C++
문제 설명
어떤 숫자에서 k개의 수를 제거했을 때 얻을 수 있는 가장 큰 숫자를 구하려 합니다.
예를 들어, 숫자 1924에서 수 두 개를 제거하면 [19, 12, 14, 92, 94, 24] 를 만들 수 있습니다. 이 중 가장 큰 숫자는 94 입니다.
문자열 형식으로 숫자 number와 제거할 수의 개수 k가 solution 함수의 매개변수로 주어집니다. number에서 k 개의 수를 제거했을 때 만들 수 있는 수 중 가장 큰 숫자를 문자열 형태로 return 하도록 solution 함수를 완성하세요.
제한 조건
- number는 1자리 이상, 1,000,000자리 이하인 숫자입니다.
- k는 1 이상 number의 자릿수 미만인 자연수입니다.
입출력 예
numberkreturn
1924 | 2 | 94 |
1231234 | 3 | 3234 |
4177252841 | 4 | 775841 |
풀이 ) 맨처음에는 정렬 하면 되지않나 싶었는데
예제 3 .을 보면 글자의 순서는 바뀌지 않다는것 1429 엿다고 94가 최고숫자가 아님 429 이면 49가 제일 큰숫자라는게 있었다.
그래서 while 문 조건(범위,중복)만 잘맞춰주면 완성되는 문제 인거같다고 생각하게 되었다.
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
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
|
int main()
{
string number = "4177252841";
int k = 4;
//글자의 순서는 바뀌지 않음
//1429 엿다고 94가 최고숫자가 아님
//1429 이면 49가 제일 큰숫자
int Itemp =0;
int Nsize = number.size() - k;
int index = 0;
string answer = "";
int cylcle = 0;
while (answer.size() !=Nsize)
{
index = 0;
Itemp = 0;
if (cylcle == 0)
{
for (int i = 0; i < number.size() - Nsize + 1; i++) //k개의 숫자를 잘라서 만드는게 길이이고 0부터 시작하므로 +1까지
{
if (Itemp == 0) //처음이면 0이니까 넣어준다
{
Itemp = number.at(i) - '0';
index = i;
cout << Itemp << endl;
}
else if (Itemp >= number.at(i) - '0') // 더크거나 같으면 앞에꺼를 넣어주고
{
continue;
}
else
{
Itemp = number.at(i) - '0'; //i번쨰가 크다면 i숫자를 기억하고 위치기억
index = i;
}
}
}
else
{
for (int i = 0+cylcle; i < number.size() +answer.size() -Nsize+1; i++) //돌면서 기억한 위치뒤를확인하는데 범위가 넘어가지않게
{
cout << number.at(i) << " ";
if (Itemp == 0)
{
Itemp = number.at(i) - '0';
index = i;
cout << Itemp << endl;
}
else if (Itemp >= number.at(i) - '0')
{
continue;
}
else
{
Itemp = number.at(i) - '0';
index = i;
}
}
}
answer += number.at(index); //위치기억한곳에 넣어주자
cylcle += index+1 -cylcle; //for문을 위한 위치기억
cout << index << "번쨰" << Itemp << endl; //테스트위함
}
cout << answer; //답
return 0;
}
|
cs |
'프로그래머스' 카테고리의 다른 글
프로그래머스 소수 찾기 (2단계 완전탐색) (0) | 2020.08.10 |
---|---|
프로그래머스 최대공약수와 최소공배수 (0) | 2020.08.05 |
프로그래머스 시저암호 (0) | 2020.08.03 |
프로그래머스 짝지어 제거하기 (0) | 2020.07.28 |
프로그래머스 구명보트 (0) | 2020.07.28 |