[Algorithm] 카드 역배치

myeonji·2022년 1월 19일
0

Algorithm

목록 보기
8/89
post-custom-banner

카드 역배치

뒤집은 소수도 그렇고.. 뒤집는게 나오는 문제는 왜이리 머리가 멈출까.. 이 문제도 검색의 힘을 좀 빌렸다..ㅋ

나온 김에 뒤집기, 거꾸로 출력하기 방법을 정리해놓으려 한다.

문자열 뒤집기

  • 반복문으로 문자열 뒤집기
original_str = 'test'
reverse_original = ''

for i in original_str:
	reverse_original = i + reverse_original
    
print(reverse_original)
  • 리스트 reverse 함수(문자열에는 reverse 함수 존재 X)
original_str1 = 'test' # 문자열
original_list = list(original_str1) # 문자열을 리스트로 타입 변환
original_list.reverse() # 리스트 역순
print(original_list)
original_str2 = ''.join(original_list) # 리스트를 다시 문자열로
print(original_str2) # 뒤집어진 문자열
  • [::-1] 문자열 슬라이싱 -> 문자열[시작:끝:규칙]
original_str = 'test'
reverse_original = original_str[::-1]
print(reverse_original)

<내 답안>

card = []
for i in range(0, 21):
    card.append(i)

for i in range(10):
    list1 = []
    z = 0
    ai, bi = map(int, input().split())
    for j in range(ai, bi+1):
        list1.append(card[j])
    list1.reverse()

    for k in range(ai, bi+1):
        card[k] = list1[z]
        z+=1

for i in range(1, len(card)):
    print(card[i], end=' ')

<모범답안>

a = list(range(21))
for _ in range(10):  # 언더바 = 변수 없이 반복
    s, e = map(int, input().split())
    for i in range((e-s+1)//2):
        a[s+i], a[e-i] = a[e-i], a[s+i]

a.pop(0)
for x in a:
    print(x, end=' ')
  • 바꿔주는 횟수 (e-s+1)//2 -> 짝수 홀수 모두 성립
    예를 들어, 2~7 이면 (7-2+1)//2 = 3 이다. ( 2<->7, 3<->6, 4<->5 총 3번 )
  • swap 방법 새로 알게 됨
profile
DBA, 경제 그리고 고냥이
post-custom-banner

0개의 댓글