백준(BaekJoon)

[BaekJoon/C] No.2908 : 상수

ekdnjs510 2024. 5. 15. 14:29
728x90

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

No.2908 문제

문제해석

 

  • 값을 거꾸로 읽기 때문에 tmp를 사용 (tmp : 변수의 값을 교환할 때 사용, 임의로 저장가능)
  • 입력받을 값은 최대 3글자의 문자열을 저장할 수 있는 배열로 선언 => 'cahr a[4]', 'char b[4]'
  • 두개의 문자열을 비교하여 결과를 반환할 것이기 때문에 sting 헤더파일에 있는 strcmp() 함수를 사용

 

소스코드

#include <stdio.h>
#include <string.h>
int main() {
	char a[4];
	char b[4];
	char tmp;

	scanf("%s", a);
	scanf("%s", b);

	tmp = a[0];
	a[0] = a[2];
	a[2] = tmp;

	tmp = b[0];
	b[0] = b[2];
	b[2] = tmp;

	if (strcmp(a, b) > 0) {
		printf("%s", a);
	}
	else {
		printf("%s", b);
	}
}

문제풀이

  1. 'cahr a[4]', 'char b[4]' : 입력받을 값은 최대 3글자의 문자열을 저장하기 위해 배열의 크기를 4로 지정해줍니다.
  2. tmp를 이용하여 입력받은 변수 a와 b의 0번째 요소와 2번째 요소의 자리를 바꿔주면 거꾸로 읽을 수 있습니다.
    ex) 123 => 321
tmp = a[0];
a[0] = a[2];
a[2] = tmp;

tmp = b[0];
b[0] = b[2];
b[2] = tmp;

  3. 조건문에서 strcmp (a, b) 함수를 이용하여 a와 b를 비교합니다.

      => 이때 a<b : 음수 반환 / a>b : 양수 반환 / a==b : 0 반환 하기 때문에 strcmp (a, b)가 0보다 크다는 것이 참이면 a가               큰 값이고, 아니면 b가 큰 값이 됩니다. 

if (strcmp(a, b) > 0) {
		printf("%s", a);
	}
	else {
		printf("%s", b);
	}

예제

728x90