일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- node.js
- amqplib
- 네이버 블로그
- 실시간 웹소켓 서버
- 서이추 매크로
- 서이추 자동
- 스크래퍼
- 국세청
- socket.io
- 서로이웃추가 매크로
- 웹소켓
- Java
- Node
- 크롤러
- Selenium 네이버 블로그
- 네이버 블로그 이웃추가 자동
- 서로이웃추가 자동
- rabbitmq
- kwoss2341
- 웹소켓 서버
- 실시간
- 셀레니움
- 크롤링
- Selenium
- nodejs
Archives
- Today
- Total
defaultK
[프로그래머스] (그리디) 큰 수 만들기 c++ 본문
https://programmers.co.kr/learn/courses/30/lessons/42883
코딩테스트 연습 - 큰 수 만들기
programmers.co.kr
기본적인 아이디어.
구현 가능한 n-k길이의 숫자들중 가장 큰 값을 구하자
1. 각자리수의 가장 큰값을 가져 와서 가장 큰 수를 만든다.
2. 첫 번째 자리는 인덱스 구간 [ 0 , k ] 중 가장 큰 [i] 값을 선택.
3. 두 번째 자리는 인덱스 구간 [ i+1, k+1 ] 중 가장 큰 [i] 값을 선택.
.
.
.
4. j 번째 자리는 인덱스 구간 [ i+1, k+(j-1) ] 중 가장 큰 [i] 값을 선택.
#include <string>
#include <vector>
#include <iostream>
using namespace std;
int maxfind(int num[],int st,int fi)
{
int answer=st;
int maxi=num[st];
for(int i=st+1; i<=fi; i++)
{
if(maxi<num[i])
{
maxi=num[i];
answer=i;
}
}
return answer;
}
//https://programmers.co.kr/learn/courses/30/lessons/42883#
string solution(string number, int k) {
string answer = "";
int n=number.length();
int num[n];
for(int i=0; i<n; i++)
{
num[i]=(int)number[i]-'0' ;
}
int st=0;
int cnt=n-k;
while(1)
{
if(n-st==cnt)
{
for(int i=st; i<n; i++)
{
answer+=number[i];
}
break;
}
else if(cnt==0)
{
break;
}
st=maxfind(num,st,n-cnt);
answer+=number[st];
st++;
cnt--;
}
return answer;
}
'알고리즘 ( C++ ) > 프로그래머스' 카테고리의 다른 글
[프로그래머스] (다익스트라) 카카오 합승 택시 요금 c++ (0) | 2021.02.05 |
---|---|
[프로그래머스] (조합) 카카오 메뉴 리뉴얼 c++ (0) | 2021.02.05 |
[프로그래머스] (최소히프) 더 맵게 c++ (0) | 2021.01.30 |
[프로그래머스] 카카오 캠핑 c++ (0) | 2021.01.27 |
[프로그래머스] (DFS/BFS) 카카오 경주로 건설 c++ (0) | 2021.01.25 |
Comments