티스토리 뷰

알고리즘/백준

백준 1422 숫자의 신 C++

4567은 소수 2021. 11. 25. 01:41

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

 

1422번: 숫자의 신

첫째 줄에 K와 N이 공백을 사이에 두고 주어진다. K와 N은 각각 50보다 작거나 같은 자연수이고, N은 K보다 크거나 같다. 둘째 줄에는 K개의 수가 한 줄에 하나씩 주어진다. 각 수는 1,000,000,000보다

www.acmicpc.net

입력으로 주어진 수들로 만들 수 있는 최대 수를 구하는 문제입니다. 다만 입력으로 주어진 모든 수를 사용해야하며 중복으로 고를 수 있습니다.

 

k개의 수와 n개의 택을 할 때 어떻게든 가장 큰 수를 뽑기 위해서는 가장 큰 수를 최대한 많이 골라 이어 붙혀야 합니다.

ex. 1, 23, 456 / 5개 택 => 456 23 1 1 1 < 456 456 456 23 1 

 

또한 10 100 을 이어 붙혔을 때 10 100 > 100 10 인 경우도 있고,

25 256을 이어 붙혔을 때 25 256 < 256 25 인 경우도 있듯이 2개의 string을 이어 붙혔을 때 직접 대소 비교를 해보아야합니다.

 

알고리즘은 다음과 같습니다.

1. 입력으로 들어온 애들을 sort 하여 가장 큰 수를 n-k개 추가한다.

2. 배열의 두 수를 이어붙힌 결과를 직접 비교하여 정렬시킨다. (50개 밖에 되지 않아 간단히 버블소트로 처리하였습니다.)

 

코드는 다음과 같습니다.

 

'알고리즘 > 백준' 카테고리의 다른 글

백준 2529 부등호 C++  (0) 2021.12.01
백준 2661 좋은수열 C++  (0) 2021.11.28
백준 1701 Cubeditor C++  (0) 2021.11.23
백준 14466 소가 길을 건너간 이유6 c++  (0) 2021.11.18
백준 4811 알약 C++  (0) 2021.11.06
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
TAG
more
«   2024/12   »
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
글 보관함