[Codeforces 118] A. Petya and Strings

WBeen·2021년 2월 6일
0

Codeforces

목록 보기
11/26

해석이 이상할 수 있습니다.
이상한 부분은 말씀해 주시면 수정하겠습니다.

문제:https://codeforces.com/problemset/problem/112/A

시간 제한: 2s
메모리 제한: 256MB

작은 Petya는 선물들을 사랑한다. 그의 엄마는 그의 생일로 크기가 같은 두개의 문자열을 샀다. 그 문자열들은 대문자,소문자 라틴어로 이뤄져있다. 지금 Petya는 두 문자열을 사전적으로(lexicographically) 비교해보고 싶어한다. 문자열들은 상관없다, 즉 그것은 대문자는 동일한 것으로본다 대응되는 소문자와(a==A). Petay를 도와 비교해주세요.

[입력]
1,2번 째 줄에는 각각 구매된 문자열이 포함된다. 문자열들의 길이는 1~100이다. 그것은 보장된다 문자열들은 같은 길이임을 그리고 또한 대문자,소문자 라틴어로만 구성된다는 것이.

[출력]
만약 첫줄이 두번째보다 이전이라면 "-1"을 출력,
만약 두번째가 처음보다 이전이라면 "1"을 출력,
만약 같다면 "0"을 출력한다. 문자열을 비교할 때, 문자열의 대소는 고려하지 않는다.

[Note]
만약 네가 사전의 공식적인 순서에 정보를 알고 싶다면(사전순서 또는 알파벳 순서라고 알려짐), 너는 아래 사이트에 방문할 수 있다.
http://en.wikipedia.org/wiki/Lexicographical_order

[풀이]

문자열을 비교하는 함수 stricmp()를 사용하였다.

이 문제를 풀면서 배운 것들

string 헤더에 내장된 strcmp 함수를 사용하면서 몇 가지를 알게 됐다.
먼저 strcmp()에 원형은

stricmp(char *string1, char *string2);

string 으로 받은 변수를 const char*형으로 변환하기 위해서는
바로 삽입할 수 없다. 따라서

string s
const char  *cc = s.c_str(); 

위와 같이 string을 const char* 로 변환해줘야 한다.
이 때 c_str()을 사용하였고
대소문자 구분없이 문자열을 비교해주는 stricmp()를 사용하려하자

warning C4996: 'stricmp':

  • The POSIX name for this item is deprecated.
  • Instead, use the ISO C++ conformant name: _stricmp.

이 같은 오류가 발생했고 이를 해결하기 위해서
stricmp() -> _stricmp() 로 변경하여 사용하였더니 오류가 해결됐다.
여담으로 strcpy -> strcpy_s 와 같이 변경하면 오류가 사라지고 정상적으로 작동한다.

[코드]
https://github.com/Woobeen906/Codeforces/blob/main/112-A.cpp

profile
Front-end 개발자로 가는 길을 기록

0개의 댓글

관련 채용 정보