백준(BaekJoon)
[BaekJoon/C] No.2908 : 상수
ekdnjs510
2024. 5. 15. 14:29
728x90
https://www.acmicpc.net/problem/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);
}
}
문제풀이
- 'cahr a[4]', 'char b[4]' : 입력받을 값은 최대 3글자의 문자열을 저장하기 위해 배열의 크기를 4로 지정해줍니다.
- 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