반응형
코드포스(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])
문제 출처
반응형
'Coding > CODEFORCES' 카테고리의 다른 글
[코드포스 CODEFORCES] 1538A Stone Game 풀이 코드 (C/C++/Java /Python) (0) | 2021.08.27 |
---|---|
[코드포스 CODEFORCES] 1511A Review Site 풀이 코드 (C/C++/Java /Python) (0) | 2021.08.23 |
[코드포스 CODEFORCES] 263A Beautiful Matrix 풀이 코드 (C/C++/Java /Python) (0) | 2021.08.03 |
[코드포스 CODEFORCES] 112A Petya and Strings 풀이 코드 (C/C++/Java /Python) (0) | 2021.08.01 |
[코드포스 CODEFORCES] 282A Bit++ 풀이 코드 (C/C++/Java /Python) (0) | 2021.07.27 |