cyphen156
백준-문자열 2908 상수 본문
제발 문제 이름좀 이런식으로 안내줬으면 좋겟다. 보통 프로그래머한테 상수라 함은 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
'컴퓨터공학 > 알고리듬 풀이' 카테고리의 다른 글
백준-문자열 11718 그대로 출력하기 (0) | 2025.01.20 |
---|---|
백준-문자열 5622 다이얼 (0) | 2024.09.30 |
백준-문자열 1152 단어의 개수 (3) | 2024.09.25 |
백준-문자열 2675 문자열 반복 (0) | 2024.09.25 |
백준-문자열 10809 알파벳 찾기 (0) | 2024.09.24 |