BOJ | 2908번

5796 단어 백준파이썬cppcpp

Python 풀이

s = input().split() #두 숫자 입력
s0 = int(s[0][::-1]) #첫번째 숫자 뒤집어서 정수형 변수로 저장
s1 = int(s[1][::-1]) #두번째 숫자 뒤집어서 정수형 변수로 저장
print(s0 if s0 > s1 else s1) #삼항연산으로 출력

split()을 해주면 ( )안의 매개체를 기준으로 문자열을 나눠서 리스트로 저장하기 때문에 s는 리스트로 저장이 된다. 문제에서 입력이 2개이므로 s0와 s1 변수로 각 숫자를 int형 변수로 변환하여 저장할 건데, 문자열 인덱싱을 해줄 수 있다. s[0][::-1]로 표현한 것은 리스트 s에서 0번째 인덱스의 문자열을 거꾸로 표현한다는 뜻이다. 인덱싱 관련해서는 나의 벨로그 파이썬 기초 시리즈에서 확인할 수 있다.
아무튼, 문자열을 거꾸로 출력하는 방법은 여러가지가 있겠지만 이게 제일 편해서 인덱싱을 사용하였다.

마지막 출력해 주는 부분에서는 삼항연산자를 이용하여 출력하였다.
s0를 출력할 건데, s0가 s1보다 클 경우 s0를 출력하라는 뜻이다. 뒤에 else s1은 s0가 s1보다 크지 않을 경우 s1을 출력하라는 뜻이다.
print(max(s0,s1))과 같은 의미이다.

C++ 풀이

#include <string>
#include <iostream>

using namespace std;

int main()
{
	ios_base::sync_with_stdio(false);
	cin.tie(NULL);

	string S1,S2;
	cin >> S1 >> S2;
	char tmp;
	tmp = S1[0];
	S1[0] = S1[2];
	S1[2] = tmp;
	tmp = S2[0];
	S2[0] = S2[2];
	S2[2] = tmp;
	S1 > S2 ? cout << S1 : cout << S2;
}

세자리 자연수니까 100의 자리수와 1의 자리수만 바꾸면 된다.

좋은 웹페이지 즐겨찾기