한 걸음씩

[백준][python] 2908 상수❓ 본문

BOJ

[백준][python] 2908 상수❓

winter17 2023. 1. 25. 16:51

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