[백준] 2529번 부등호 (= inequality sign) - 재우스 프로그래밍 (C 언어)
2021. 2. 28. 17:04ㆍ백준
문제 링크 :www.acmicpc.net/problem/2529
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
char *maxComb(const char *, int);
char *minComb(const char *, int);
void swap(char *, char *);
int main(void)
{
char *A;
int a = 0; //입력 받을 문자열 A의 크기
scanf("%d", &a);
getchar(); //위의 scanf에서 입력받고 입력버퍼에 남아있는 \n 제거
A = (char *)malloc(sizeof(char) * (a + 1)); //'\0' 저장 위해 크기 a + 1
//부등호 입력 받기
for (int i = 0; i < a; i++) {
A[i] = getchar();
getchar();
}
A[a] = '\0'; //문자열로 저장해놓기 위해 마지막에 \0 저장
printf("%s\n", maxComb(A, a));
printf("%s\n", minComb(A, a));
free(A);
return 0;
}
char *maxComb(const char *A, int a)
{
char *result = (char *)calloc(a + 2, sizeof(char)); //'\0'저장 + 0부터 a까지 저장하기 위해 크기 1 + (a + 1)
int right, left;
result[0] = '9'; //제일 앞에 먼저 max저장
for (int i = 0; i < a; i++) {
right = i + 1; //부등호 오른쪽
left = i; //부등호 왼쪽
result[right] = (char)(9 - right + 48); //그 다음 최댓값 저장
if (A[i] == '<') {
do {
//부등호 양쪽 교환
swap(&result[left--], &result[right--]);
//부등호가 > 나올 때까지 계속 교환
} while (left >= 0 && A[left] == '<');
}
}
//결과를 출력하기 위해 마지막에 \0 저장
result[a + 1] = '\0';
return result;
}
char *minComb(const char *A, int a)
{
char *result = (char *)calloc(a + 2, sizeof(char)); //'\0'저장 + 0부터 a까지 저장하기 위해 크기 1 + (a + 1)
int right, left;
result[0] = '0'; //제일 앞에 먼저 min저장
for (int i = 0; i < a; i++) {
right = i + 1; //부등호 오른쪽
left = i; //부등호 왼쪽
result[right] = (char)(right + 48); //그 다음 최솟값 저장
if (A[i] == '>') {
do {
//부등호 양쪽 교환
swap(&result[left--], &result[right--]);
//부등호가 < 나올 때까지 계속 교환
} while (left >= 0 && A[left] == '>');
}
}
//결과를 출력하기 위해 마지막에 \0 저장
result[a + 1] = '\0';
return result;
}
void swap(char *left, char *right)
{
char temp;
temp = *left;
*left = *right;
*right = temp;
return;
}
'백준' 카테고리의 다른 글
[백준] 2623번 음악프로그램 (= music program) - 재우스 프로그래밍 (C 언어) (0) | 2021.03.01 |
---|---|
[백준] 1753번 최단 경로 (= shortest path) - 재우스 프로그래밍 (C 언어) (0) | 2021.02.28 |
[백준] 11279번 최대 힙 (= maximum heap) - 재우스 프로그래밍 (C 언어) (0) | 2021.02.22 |
[백준] 1927번 최소 힙 (= minimal heap) - 재우스 프로그래밍 (C 언어) (0) | 2021.02.22 |
[백준] 12789번 도키도키 간식드리미 (= dokidoki snack helper) - 재우스 프로그래밍 (C 언어) (0) | 2021.02.21 |