반응형

코드포스(Codeforces) 339A Helpful Maths 풀이 코드

C | C++ | Java | Python

Difficulty : *800 (Greedy / Implementation / Sortings / Strings)


문제 해설

덧셈을 처음 배우는 친구를 위해 식을 더 쉽게 만들어 봅시다. 1, 2, 3만 들어있는 덧셈 식이 주어지면 각 수가 반드시 오름차순으로 배열되도록 바꾸어 출력하는 문제입니다.

풀이

문자열을 받고 1, 2, 3이 각각 몇 번 들어있는지 체크한 후 각 횟수만큼 형식에 맞추어 출력해주면 됩니다.

코드

#include <stdio.h>
#include <string.h>

int main(){
    char show[101];
    int arr[3] = { 0, }, i, len;
    scanf("%s" , show);
    len = strlen(show);

    if (len == 1) {
        printf("%s", show);
        return 0;
    }

    for (i = 0; i < len; i++) {
        if (show[i] == '1')
            arr[0]++;
        else if (show[i] == '2')
            arr[1]++;
        else if (show[i] == '3')
            arr[2]++;
    }

    int cnt = 0;
    for (i = 0; i < arr[0]; i++) {
        show[cnt] = '1';
        cnt += 2;
    }
    for (i = 0; i < arr[1]; i++) {
        show[cnt] = '2';
        cnt += 2;
    }
    for (i = 0; i < arr[2]; i++) {
        show[cnt] = '3';
        cnt += 2;
    }

    printf("%s", show);
    return 0;
}
#include <iostream>
#include <string>

int main(){
    std::string show;
    int arr[3] = { 0, }, len;
    std::cin>>show;
    len = show.length();

    if (len == 1) {
        std::cout<<show;
        return 0;
    }

    for (int i = 0; i < len; i++) {
        if (show[i] == '1')
            arr[0]++;
        else if (show[i] == '2')
            arr[1]++;
        else if (show[i] == '3')
            arr[2]++;
    }

    int cnt = 0;
    for (int i = 0; i < arr[0]; i++) {
        show[cnt] = '1';
        cnt += 2;
    }
    for (int i = 0; i < arr[1]; i++) {
        show[cnt] = '2';
        cnt += 2;
    }
    for (int i = 0; i < arr[2]; i++) {
        show[cnt] = '3';
        cnt += 2;
    }

    std::cout<<show;
    return 0;
}
import java.util.Scanner;

public class Main{
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		String show = sc.nextLine();
		String rlt = "";
		int arr[] = new int[3];
		int len = show.length();
		
		if (len == 1) {
            System.out.println(show);
            return;
        }
        
        for (int i = 0; i < len; i++) {
            if (show.charAt(i) == '1')
                arr[0]++;
            else if (show.charAt(i) == '2')
                arr[1]++;
            else if (show.charAt(i) == '3')
                arr[2]++;
        }

        for (int i = 0; i < arr[0]; i++) {
            rlt += "1+";
        }
        for (int i = 0; i < arr[1]; i++) {
            rlt += "2+";
        }
        for (int i = 0; i < arr[2]; i++) {
            rlt += "3+";
        }
        rlt = rlt.substring(0, rlt.length() - 1);

        System.out.println(rlt);
	}
}
show = input()
rlt = ''
arr  = [0, 0, 0]
lenn = len(show)

if lenn == 1:
    print(show)
    
else:
    for i in range(lenn):
        if show[i] == '1':
            arr[0] += 1
        elif show[i] == '2':
            arr[1] += 1
        elif show[i] == '3':
            arr[2] += 1
            
    for i in range(arr[0]):
        rlt += '1+'
    for i in range(arr[1]):
        rlt += '2+'
    for i in range(arr[2]):
        rlt += '3+'
    
    print(rlt[0:-1])

문제 출처

https://codeforces.com/contest/339/problem/A

반응형

+ Recent posts