본문 바로가기
알고리즘

BOJ 13417번 - 카드 문자열

by eunyoung 2023. 2. 12.

난이도


실버 III

 

 

풀이


전형적인 그리디 유형의 문제였다.

일단 배열을 하나 만들어놓고 첫번째 원소를 넣은 다음 반복문을 돌려 배열의 첫번째 인덱스 값과 나머지 원소들을 비교해서 사전순으로 느리면 뒤에 넣고 사전순으로 빠르면 앞에 넣는 방식으로 구현했다. 

 

 

파이썬 코드

import sys

input=sys.stdin.readline

T=int(input())

for _ in range(T):
    N=int(input())
    answer=[]
    card=input().rstrip().split(" ")
    answer.append(card[0])
    for i in range(1,len(card)):
        if answer[0]<card[i]:
            answer.append(card[i])
        else:
            answer.insert(0,card[i])

    print("".join(answer))

 

 

자바 코드

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int T = Integer.parseInt(br.readLine());

        for(int i = 0; i < T; i++) {
            Integer N = Integer.valueOf(br.readLine());
            List<String> array = new ArrayList<>();
            String[] cards = br.readLine().split(" ");
            array.add(cards[0]);
            for(int j = 1; j < cards.length; j++){
                if (array.get(0).compareTo(cards[j])<0){
                    array.add(cards[j]);
                }else{
                    array.add(0,cards[j]);
                }
            }
            StringBuilder sb = new StringBuilder();
            for(String arr : array){
                sb.append(arr);
            }
            System.out.println(sb);
        }

    }
}

 

 

 

 

문제 링크


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

 

13417번: 카드 문자열

입력 데이터는 표준 입력을 사용한다. 입력은 T개의 테스트 데이터로 구성된다. 입력의 첫째 줄에 테스트 케이스의 개수를 나타내는 자연수 T가 주어진다. 각각의 테스트 케이스의 첫째 줄에 처

www.acmicpc.net

 

'알고리즘' 카테고리의 다른 글

BOJ 3613번 - Java vs C++  (0) 2023.03.03
BOJ 2671번 - 잠수함식별  (0) 2023.02.12
BOJ 10610번 - 30  (0) 2023.02.10
프로그래머스 - 양궁대회  (0) 2023.02.08
프로그래머스 - 주차 요금 계산  (0) 2023.02.08