반응형

코드포스(Codeforces) 112A Petya and Strings 풀이 코드

C | C++ | Java | Python

Difficulty : *800 (Implementation / Strings)


문제 해설

입력된 두 문자열을 대소문자 구분 없이 사전 순으로 비교하여 첫 번째 문자열이 더 앞서면 -1, 두 문자열이 같으면 0, 두 번째 문자열이 더 앞서면 1을 출력하는 문제입니다.

풀이

풀이

문자열은 최대 100자를 넘지 않으므로 101 사이즈의 char배열을 두 개 선언하고 각각 입력받아 모두 소문자로 치환합니다. 이후 두 문자열을 처음부터 비교하여 사전 순으로 앞선 것이 첫 문자열이라면 -1, 두 번째 문자열이라면 1, 둘이 같다면 0을 출력합니다.

String으로 두 문자열을 입력받아 모두 소문자로 치환합니다. 이후 두 문자열을 처음부터 비교하여 사전 순으로 앞선 것이 첫 문자열이라면 -1, 두 번째 문자열이라면 1, 둘이 같다면 0을 출력합니다.

String으로 두 문자열을 입력받아 toLowerCase()로 모두 소문자로 치환합니다. string1.compareTo(string2) 함수가 두 문자열을 사전 순으로 비교하여 string1이 앞서면 음수를, string2가 앞서면 양수를, 같으면 0을 반환하는 것을 이용하여 결과를 출력합니다.

두 문자열을 입력받아 lower()로 모두 소문자로 치환합니다. 이후 두 문자열을 처음부터 비교하여 사전 순으로 앞선 것이 첫 문자열이라면 -1, 두 번째 문자열이라면 1, 둘이 같다면 0을 출력합니다.

코드

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

int main() {
	char a[101];
	char b[101];
	int i = 0, len = 0;

	scanf("%s %s", a, b);
	len = strlen(a);

	for(i = 0; i < len; i++) {
		if (a[i] >= 'A' && a[i] <= 'Z') {
			a[i] = a[i] - 'A' + 'a';
		}
		if (b[i] >= 'A' && b[i] <= 'Z') {
			b[i] = b[i] - 'A' + 'a';
		}
	}

	for (i = 0; i < len; i++) {
		if (a[i] != b[i]) {
			if (a[i] < b[i]) {
				printf("-1");
				return 0;
			}
			else if (a[i] > b[i]) {
				printf("1");
				return 0;
			}
		}
	}
	printf("0");
	return 0;
}
#include <iostream>
#include <string>
using namespace std;

int main(){
    string a;
	string b;
	int i = 0, len = 0;

	cin>>a>>b;
	len = a.size();

	for(i = 0; i < len; i++) {
		if (a[i] >= 'A' && a[i] <= 'Z') {
			a[i] = a[i] - 'A' + 'a';
		}
		if (b[i] >= 'A' && b[i] <= 'Z') {
			b[i] = b[i] - 'A' + 'a';
		}
	}

	for (i = 0; i < len; i++) {
		if (a[i] != b[i]) {
			if (a[i] < b[i]) {
				cout<<"-1"<<endl;
				return 0;
			}
			else if (a[i] > b[i]) {
				cout<<"1"<<endl;
				return 0;
			}
		}
	}
	cout<<"0"<<endl;
	return 0;
}
import java.util.Scanner;

public class Main{
	public static void main(String[] args){
		Scanner sc = new Scanner(System.in);
		String a = sc.nextLine();
		String b = sc.nextLine();
		a = a.toLowerCase();
		b = b.toLowerCase();
		int rlt = a.compareTo(b);
		if(rlt<0){
		    rlt = -1;
		}
		else if(rlt>0){
		    rlt = 1;
		}
		System.out.println(rlt);
	}
}
a = input()
b = input()
a = a.lower()
b = b.lower()
rlt = 0
for i in range(len(a)):
    if a[i] != b[i]:
        if a[i] < b[i]:
            rlt='-1'
            break
        elif a[i] > b[i]:
            rlt='1'
            break
print(rlt)

문제 출처

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

반응형

+ Recent posts