2017 C Chapter 5 (Week 10-11)

From: 2017-03-01 00:00:00 To: 2017-06-13 00:00:00 Now: 2024-11-23 18:29:44 Status: Public

D - 연습 5.4 n시리즈 문자열 함수 3연쇄

Time Limit: 1s Memory Limit: 128MB

Submissions: 635 Solved: 234
Description

함수는 입력 변수의 개수에 따라 unary, binary, ternary 등등으로 나뉘어집니다. 이중 ternary는 3개의 입력 변수를 받는 것을 의미합니다.

이번 문제는 3개의 ternary 문자열 함수를 구현하고, 이를 이용해 해결하는 것입니다.

 

문자열 S가 주어졌을 때,

- strncpy n str : S 문자열에 str 문자열의 n개의 문자를 복사.

    - 예: S가 HELLO일때, strncpy 3 HI! 의 결과는 HI!LO가 됨.

- strncat n str : S 문자열의 끝에 str 문자열의 n개의 문자를 이어붙임

    - 예: S가 HELLO일때, strncat 3 HI!의 결과는 HELLOHI!가 됨.

- strncmp n str : S 문자열과 str 문자열을 앞에서부터 n개의 문자를 비교하여 ascii code 기준으로 비교하여 S가 클 경우 1, S가 작을 경우 -1, 동일할 경우 0을 반환함

    - 예: S가 HELLO일때, strncmp 3 HI!의 결과는 -1이 됨. ('E' < 'I')

 

입력으로는 초기 문자열 S와 strncpy, strncat, strncmp 함수의 호출 방법이 주어집니다. strncpy, strncat의 결과는 다음 함수 실행의 입력값 S로 사용됩니다.

최종적으로 strncmp가 호출되었을 때의 결과값을 알아봅시다!

Input
  • line 1 : 초기 입력 문자열 S (1 ≤ ||S|| < 100)
  • line 2 ~ EOF : 문자열 함수
    • 문자열 함수 : name n str
      • name : 함수명 strncpy, strncat, strncmp 중 하나
      • n : 함수에서 사용하는 문자의 개수
      • str : 함수에서 사용하는 문자열 (1 ≤ n,||str|| < 100)
      • strncpy : str에서 n개의 문자열을 S로 복사
      • strncat : str에서 n개의 문자열을 S의 끝에 이어붙임
      • strncmp : str과 S의 n개의 문자를 비교
Output

line 1 : strncmp 함수의 결과

Sample Input
START
strncpy 10 HELLO
strncat 4 HELL!
strncmp 5 HELLAWORLD
Sample Output
1
Hint

!주의! C언어 내장 strncmp 함수는 본 문제의 strncmp 함수랑 다른 결과를 반환합니다. 그러므로 내장 함수를 단순히 사용해서는 문제를 해결할 수 없습니다.

---- 샘플 가이드 ----

초기 S : START

strncpy 10 HELLO 의 결과 : "HELLO" 문자열에서 10글자가 S로 복사됩니다. 5글자밖에 없으므로 5글자가 S로 복사됩니다. 결과로 S는 "HELLO"가 됩니다.

strncat 4 HELL!의 결과 : "HELL!" 문자열에서 4글자가 S의 끝에 이어붙여집니다. "HELL"이 "HELLO"의 끝에 이어져서 S는 "HELLOHELL"이 됩니다.

strncmp 5 HELLAWORLD의 결과 : "HELLAWORLD"의 앞에서부터 5글자와 S("HELLOHELL")의 앞에서부터 5글자를 비교합니다. 4글자는 동일하지만, 5번쨰 글자가 서로 다릅니다. S의 "O"가 "A"보다 크므로 결과는 1이 됩니다.