알고리즘

백준 - 2908번 / python slicing

joy_lee 2021. 8. 2. 17:14

https://www.acmicpc.net/problem/2908

 

2908번: 상수

상근이의 동생 상수는 수학을 정말 못한다. 상수는 숫자를 읽는데 문제가 있다. 이렇게 수학을 못하는 상수를 위해서 상근이는 수의 크기를 비교하는 문제를 내주었다. 상근이는 세 자리 수 두

www.acmicpc.net

처음 작성한 코드

1
2
3
4
5
6
7
8
9
10
11
a, b = input().split()
a_list = list(a)
b_list = list(b)
a_list.reverse()
b_list.reverse()
a_new = int(''.join(a_list))
b_new = int(''.join(b_list))
if a_new > b_new:
    print(a_new)
else:
    print(b_new)
cs

a와 b를 입력받아 list에 하나씩 넣고 list.rever()를 통해 순서를 거꾸로 바꿔주었다.

다시 list를 합쳐서 바뀐 수를 비교했다.

 

다른 알고리즘

1
2
3
4
5
6
7
a, b = input().split()
a_new = int(a[::-1])
b_new = int(b[::-1])
if a_new > b_new:
    print(a_new)
else:
    print(b_new)
cs

입력받은 문자의 순서를 거꾸로 바꾸는데 굳이 list로 변환할 필요가 없다.

slicing을 이용해 바로 변환이 가능하다.

 

Python Slicing

연속적인 객체(list, string, tuple)의 범위를 지정해 선택한 객체들을 가져오는 표기법.

새로운 객체를 반환한다(원본 객체가 변화하지 않는다)

 

a[start : end : step]

start: slicing을 시작하는 위치

end: slicing을 마치는 위치

step: 몇 개씩 끊어서 가져올지 정함

세가지 변수 모두 양수/음수가 가능하다.

 

start, end를 이용해 slicing하는 방법은 잘 알고있었는데 start, end를 생략하고 step만 적을 경우에 대해서는 새롭게 알게됐다.

1
2
3
= input()
a_new = a[::-1]
print(a_new)
cs

step의 경우, 양수면 step만큼 오른쪽으로 이동하며 가져오고, 음수이면 step만큼 왼쪽으로 이동하며 가져온다.

a[::-1]같은 경우, start와 end값이 생략되었으므로 a 전체를 대상으로 slicing하며 step이 -1이므로 맨 마지막부터 거꾸로 가져온다.

 

 

참고 페이지

https://twpower.github.io/119-python-list-slicing-examples

 

[Python] 파이썬 슬라이싱(slicing) 기본과 예제

Practice makes perfect!

twpower.github.io

 

'알고리즘' 카테고리의 다른 글

백준 - 2941번 / replace()  (0) 2021.08.02
백준 - 5622번 / find(), index(), list comprehension  (0) 2021.08.02
백준 - 10809번 / 아스키코드, enumerate()  (0) 2021.07.28
백준 - 함수  (0) 2021.07.27
백준 - 1차원 배열  (0) 2021.07.26