인프런 커뮤니티 질문&답변

푸우린푸우린님의 프로필 이미지

작성한 질문수

파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)

3. 카드 역배치

카드 역배치

작성

·

222

1

안녕하세요 강사님 강의보고 많이 배우고 있는 수강생입니다.

강의에선 구간을 역배치 할때 끝에서 끝부터 스왑하는식으로 했었는데요

제가 처음에 문제를 풀려고했을때 두가지 방법으로 해결하려했습니다.

1. 리스트 원하는 구간을 출력하고 싶을때 a[2:5]처럼 할수 있다는 부분을 이용하고 싶었고. 

2. sort(reverse=True)를 사용해보려고 했었거든요 

그러다 막혀서 강의를 보았고 선생님의 방법으로 해결할수 있었지만..

제가 생각한 방법으로도 실제로 구현을 할수 있는지 궁금합니다 ㅠ 제 머릿속에는 한계가 있는거 같아가지고요 ㅠ

답변 2

1

김태원님의 프로필 이미지
김태원
지식공유자

안녕하세요^^

리스트 슬라이스는 원본리스트는 그대로 둔채 새로운 리스트를 생성합니다. 

그래서 a[s:e+1].reverse() 를 한다고 해서 원본 a 리스트가 변경되지는 않습니다. 

이 방법으로는 곤란해 보입니다. 

0

row = list(range(1, 21))

for _ in range(10):

    a, b = list(map(int, input().split()))

    if a != 1:

        row[a-1:b] = row[b-1:a-2:-1]

    else:

        row[a-1:b] = row[b-1::-1]

print(*row)

제 풀이입니다 ! 늦었지만 일단 올려봅니다.

이거 정렬하면 안될거에요. 문제는 숫자들의 순서만 바꿔주는거라 정렬하면 크기별로 되버려서 안되더라구요.

정렬을 왜 해요? 저도 비슷하게 풀었는데 test케이스 다 통과했습니다. 혹시 몰라서 규현님껏도 돌려봤는데 모두 test 케이스 통과했습니당!