반응형

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

 

2529번: 부등호

두 종류의 부등호 기호 ‘<’와 ‘>’가 k개 나열된 순서열 A가 있다. 우리는 이 부등호 기호 앞뒤에 서로 다른 한 자릿수 숫자를 넣어서 모든 부등호 관계를 만족시키려고 한다. 예를 들어, 제시

www.acmicpc.net

 

부등호 조건에 맞게 수를 나열해서 최대, 최솟값을 구해주었습니다.

범위를 제대로 신경쓰지않아서 오답이 나왔었는데, 정답 수는 최대 9876543210까지 나올 수 있으므로 long long int로 값을 계산해주었습니다.

 

#include <iostream>
#include <algorithm>
using namespace std;
int k, v[10] = { 0 };
long long int m1 = -1, m2 = 1e10;
char sign[11];
void f(int c, int p, long long int val) {
	if (c == k + 1) {
		m1 = max(m1, val);
		m2 = min(m2, val);
		return;
	}
	for (int i = 0; i < 10; i++) {
		if (v[i] || sign[c - 1] == '<' && p > i || sign[c - 1] == '>' && p < i) continue;
		v[i] = 1;
		f(c + 1, i, val * 10 + i);
		v[i] = 0;
	}
}
void print(long long int m) {
	for (int i = k; i >= 0; m /= 10, i--) sign[i] = m % 10 + '0';
	printf("%s\n", sign);
}
int main() {
	scanf("%d", &k);
	for (int i = 0; i < k; i++) scanf(" %c", &sign[i]);
	for (int i = 0; i < 10; i++) {
		v[i] = true;
		f(1, i, i);
		v[i] = false;
	}
	sign[k + 1] = '\0';
	print(m1);
	print(m2);
}
반응형

'Algorithm' 카테고리의 다른 글

백준 14391 : 종이 조각  (0) 2021.11.12
백준 1248 : 맞춰봐  (0) 2021.11.12
백준 12100 : 2048 (Easy)  (0) 2021.11.12
백준 6064 : 카잉 달력  (0) 2021.11.12
백준 13398 : 연속합 2  (0) 2021.11.12

+ Recent posts