컴퓨터공학/알고리듬 풀이
백준-문자열 2908 상수
cyphen156
2024. 9. 30. 15:10
제발 문제 이름좀 이런식으로 안내줬으면 좋겟다. 보통 프로그래머한테 상수라 함은 Constant를 생각하지 사람 이름을 생각하진 않으니까
두 수를 입력받고 입력받은 자릿수를 역순으로 바꾼 후 비교하여 큰 수를 출력하면 된다.
이 문제의 핵심은 입력 데이터의 강제 형변환 또는 자릿수 파싱, 그리고 비교 연산이다.
C 풀이에서는 정수형으로 입력받아 자릿수 파싱을 통해 해결하겠다.
제약사항
- 0 < Input < 1,000
주의 사항
없다.
C 풀이
상수_2908.c
자릿수 파싱법
/**
* 백준 2908 상수
* 두 수를 입력받고 입력받은 자릿수를 역순으로 바꾼 후 비교하여 큰 수를 출력하면 된다.
* 이 문제의 핵심은 입력 데이터의 강제 형변환 또는 자릿수 파싱, 그리고 비교 연산이다.
*
*
* 제한사항
*****************************************
* 0 < Input < 1,000 *
*****************************************
*
*
*
* 주의
* 없다.
*
* 풀이시간 30분
*/
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main(void)
{
int first, second, temp = -1;
char result[3] = {0};
scanf("%d %d", &first, &second);
// 자릿수 파싱
for (int i = 0; i < 3; ++i)
{
// 나머지 연산을 통해 한자리 수 비교
int a = first%10, b = second%10;
// 다음 연산을 위한 자릿수 다운
first /= 10;
second /= 10;
if (temp != -1)
{
result[i] = (temp % 10) + '0';;
temp /= 10;
continue;
}
if(a > b)
{
temp = first;
result[i] = a + '0';
}
else if(a < b)
{
temp = second;
result[i] = b + '0';
}
else
{
result[i] = a + '0';
}
}
printf("%s\n", result);
return 0;
}
상수_2908_char.c
문자열로 처리방법
/**
* 백준 2908 상수
* 두 수를 입력받고 입력받은 자릿수를 역순으로 바꾼 후 비교하여 큰 수를 출력하면 된다.
* 이 문제의 핵심은 입력 데이터의 강제 형변환 또는 자릿수 파싱, 그리고 비교 연산이다.
*
*
* 제한사항
*****************************************
* 0 < Input < 1,000 *
*****************************************
*
*
*
* 주의
* 없다.
*
* 풀이시간 30분
*/
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main(void) {
char num1[4], num2[4];
char temp;
scanf("%s %s", num1, num2);
temp = num1[0];
num1[0] = num1[2];
num1[2] = temp;
temp = num2[0];
num2[0] = num2[2];
num2[2] = temp;
for (int i = 0; i < 3; i++) {
if (num1[i] > num2[i]) {
printf("%s", num1);
break;
}
else if (num1[i] < num2[i]) {
printf("%s", num2);
break;
}
}
return 0;
}
C++ 풀이
상수_2908.cpp
/**
* 백준 2908 상수
* 두 수를 입력받고 입력받은 자릿수를 역순으로 바꾼 후 비교하여 큰 수를 출력하면 된다.
* 이 문제의 핵심은 입력 데이터의 강제 형변환 또는 자릿수 파싱, 그리고 비교 연산이다.
*
*
* 제한사항
*****************************************
* 0 < Input < 1,000 *
*****************************************
*
*
*
* 주의
* 없다.
*
* 풀이시간 5분
*/
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
int main()
{
string first, second;
cin >> first >> second;
reverse(first.begin(), first.end());
reverse(second.begin(), second.end());
if (stoi(first) > stoi(second))
{
cout << first << '\n';
}
else
{
cout << second << '\n';
}
return 0;
}
모든 예제 코드의 소스파일은 제 개인 깃허브 레포지토리 에 있습니다.
Workspace/알고리듬 풀이 at main · cyphen156/Workspace · GitHub
Workspace/알고리듬 풀이 at main · cyphen156/Workspace
Studying . Contribute to cyphen156/Workspace development by creating an account on GitHub.
github.com