[백준 BOJ] 2908번 상수 (C언어)
2022. 1. 30. 17:25ㆍPS (Program Solving)/BOJ (백준)
문제 설명
https://www.acmicpc.net/problem/2908
2908번: 상수
상근이의 동생 상수는 수학을 정말 못한다. 상수는 숫자를 읽는데 문제가 있다. 이렇게 수학을 못하는 상수를 위해서 상근이는 수의 크기를 비교하는 문제를 내주었다. 상근이는 세 자리 수 두
www.acmicpc.net
접근 방법 - 문자열을 이용한 수학 문제
백준의 2908번 문제는 문자형 배열을 이용한 수학 문제이다.
해당 문제는 입력받은 두 숫자의 앞뒤를 뒤집었다는 가정하에 둘 중 큰 수를 출력하는 문제이다.
자릿수를 각각 추출하여 해답을 구하는 방법도 있지만, 이 문제는 문자열을 이용하면 보다 편리하게 해결할 수 있다.
문자열의 경우엔 세 자릿수의 숫자라 할지라도 숫자 하나씩 문자로 따로 저장하기 때문이다.
필자는 아래의 순서대로 코드를 작성하여 문제를 해결하였다.
코드의 실행 순서
1) 2개의 숫자를 저장할 문자형 배열을 따로 선언하고, 두 숫자를 입력받는다.
2) 2개의 숫자 모두, 백의 자릿수와 일의 자릿수 위치를 바꾼다.
3) 뒤집어진 숫자를 이용해, 백의 자릿수부터 두 숫자를 비교한다.
- 만일 어느 한쪽이 더 크다면, 해당 문자열을 출력한다.
4) 출력이 완료되면, 실행 종료한다.
반응형
성공한 코드
#define _CRT_SECURE_NO_WARNINGS
#pragma warning(disable: 4996)
#include <stdio.h>
#include <string.h>
//백준 2908번 코드
char c1[4];
char c2[4];
int main() {
scanf("%s", &c1);
scanf("%s", &c2);
int t1, t2;
t1 = c1[0]; c1[0] = c1[2]; c1[2] = t1;
t2 = c2[0]; c2[0] = c2[2]; c2[2] = t2;
for (int i = 0; i < 3; i++) {
if (c1[i] > c2[i]) { printf("%s", c1); break; }
else if (c1[i] < c2[i]) { printf("%s", c2); break; }
}
}
제출 결과
(2021.12.19 백준 2908번 문제 제출 결과)
(본래 숫자 비교 문제이지만, 어떤 경우엔 문자열의 속성을 이용하는 게 편리하다는 것을 깨달았다.)
반응형
'PS (Program Solving) > BOJ (백준)' 카테고리의 다른 글
[백준 BOJ] 3052번 나머지 (C언어) (0) | 2022.01.30 |
---|---|
[백준 BOJ] 2920번 음계 (C언어) (0) | 2022.01.30 |
[백준 BOJ] 2884번 알람 시계 (C언어) (0) | 2022.01.30 |
[백준 BOJ] 2869번 달팽이는 올라가고 싶다 (C언어) (0) | 2022.01.29 |
[백준 BOJ] 2864번 5와 6의 차이 (C언어) (0) | 2022.01.29 |