한 걸음씩
[백준][python] 2908 상수❓ 본문
https://www.acmicpc.net/problem/2908
2908번: 상수
상근이의 동생 상수는 수학을 정말 못한다. 상수는 숫자를 읽는데 문제가 있다. 이렇게 수학을 못하는 상수를 위해서 상근이는 수의 크기를 비교하는 문제를 내주었다. 상근이는 세 자리 수 두
www.acmicpc.net
풀이 과정 1
1. A, B를 string 타입으로 공백으로 구분해서 입력을 받고
2. 입력받은 A, B를 [::-1] 역순으로 만들어주고 정수형(int)으로 바꾼 후 A , B 변수에 저장
3. 조건문으로 비교 후 출력
❓ 풀이 과정 2번에서 역순으로 만들어주고 int로 형변환한 것을 새 변수에 넣어서 출력하게 만드려고 했더니 이것도 틀렸다고 나왔는데
왜 틀리게 나오는 건지 모르겠다
A, B = input().split()
A = int(A[::-1])
B = int(B[::-1])
# 방법 1 > 조건문을 이용해 큰 수 찾기
if A > B:
print(A)
else:
print(B)
# 방법 2 > max함수로 큰 수 찾기
print(max(A, B))
풀이 과정 2
1. 소요시간을 따져봤을 때 [풀이 과정 1]보다는 비효율적이지만 다시 풀어봤을 때 이렇게도 풀려서 기록!
2. 세자리 수를 입력받을 때 공백으로 구분하여 문자열형태로 입력받고 리스트로 만들어주기
3. reverse함수로 문자열 뒤집기
4. 문자열이 전부 쪼개진 상태니까 join함수로 공백 없이 붙여주기
5. 정수형으로 바꿔주고 max함수로 큰 수 출력하기
a, b = input().split()
A = list(a)
B = list(b)
A.reverse()
B.reverse()
A_ = "".join(A)
B_ = "".join(B)
A_int = int(A_)
B_int = int(B_)
print(max(A_int, B_int))
리뷰
첫 번째 리뷰 )
A, B = map(int, input().split())
A_list = []
B_list = []
if A < B:
for i in str(B):
B_list.append(i)
print(*B_list[::-1], sep="")
else:
for i in str(A):
A_list.append(i)
print(*A_list[::-1], sep='')
첫 번째 시도 때 짠 코드인데 vscode에서는 모든 예시 코드 돌아가는데 edge case가 있는 건지 백준에서는 틀렸다고 나왔다
위에서 짠 코드랑 방법은 비슷한데 왜 틀린 거지..?
두 번째 리뷰 )
다시 풀어봤는데 슬라이싱이라는 간단한 방법은 생각이 나지 않았다,,, 그래도 새로운 방법으로도 풀 수 있다는 걸 알았다
[풀이 과정 2]를 통해 [풀이 과정 1]에서 max함수를 이용하면 코드 길이를 더 줄일 수 있다는 걸 알았다!
'BOJ' 카테고리의 다른 글
[백준][python] 2720 세탁소 사장 동혁 ✅ (0) | 2023.01.26 |
---|---|
[백준][python] 10101 삼각형 외우기 (0) | 2023.01.26 |
[백준][python] 3052 나머지 (0) | 2023.01.25 |
[백준][python] 1546 평균 (0) | 2023.01.25 |
[백준][python] 1157 단어공부 (0) | 2023.01.25 |