ZZULI Oj--1817
Time Limit: 1 Sec
Memory Limit: 128 MB
Submit: 75
Solved: 35
Submit Status Web Board
Description
프로그램 쓰기를 좋아하는 학우들은 일반적으로 숫자에 대해 비교적 민감하다.한 줄의 길이가 2*n인 번호는 다음과 같은 조건에 부합되면 일치한다고 생각합니다.
이 번호를 좌우 반으로 나누고 길이는 모두 n입니다.왼쪽 부분의 한 자릿수에 대해 오른쪽 부분에는 한 자릿수가 그것보다 엄격하게 존재한다.또는 왼쪽 부분의 한 자릿수에 대해 오른쪽 부분에는 엄격하게 그것보다 적은 수가 존재한다.오른쪽 부분의 한 분은 왼쪽 부분의 한 분, 즉 한 자릿수당 한 번만 사용할 수 있음을 주의해야 한다.
번호를 주십시오. 당신은 그것이 일치하는지 아닌지를 판단할 수 있습니까?
Input
다중 그룹 데이터.
첫 번째 행, 정수 n (n<100) 1개
두 번째 줄은 길이가 2*n인 번호로'0'~'9'로 구성되어 있습니다.
Output
각 그룹의 데이터에 대해 번호가 일치하면'YES'를 출력하고 그렇지 않으면'NO'를 출력한다(따옴표는 출력하지 않는다).
Sample Input
224212013523754
Sample Output
YES
YES
NO
문제 풀이 사고방식: 아주 간단한 문제로 두 번이나 시간을 초과했다. 판단에 기교 문제가 존재하는 줄 알고 방법을 바꾸어 비교 횟수를 크게 줄였지만 시간을 초과했다.입력 시간이 초과될 줄은 몰랐습니다. 문자열로 직접 입력해야 합니다.다음에 순서를 정한 다음에 하나씩 비교해 보자.
코드는 다음과 같습니다.
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
char a[2*1000+10];
char b[1010];
char c[1010];
int main(){
int n;
while(scanf("%d",&n)!=EOF){
scanf("%s",a);
strcpy(c,a+n);
strncpy(b,a,n);
sort(b,b+n);
sort(c,c+n);
int flag=1;
if(b[0]>c[0]){
for(int i=0;i<n;i++){
if(b[i]<=c[i]){
flag=0;
break;
}
}
}
else if(b[0]<c[0]){
for(int i=0;i<n;i++){
if(b[i]>=c[i]){
flag=0;
break;
}
}
}
else flag=0;
if(flag)printf("YES
");
else printf("NO
");
}
return 0;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.