코딩 테스트/Baekjoon

B2 10811번. 바구니 뒤집기

  • -
728x90


n,m = map(int, input().split()) a = [g+1 for g in range(n)] aa=a.copy() for _ in range(m): i,j = map(int,input().split()) if (j-i)%2 != 0: if j-i==1: a[i-1] = aa[j-1] # 2,3 a[j-1] = aa[i-1] aa = a.copy() else: for p in range(i-1,int((j+1)/2)): #2,2 if j == p: pass else: a[p] = aa[j-1] # 2,3 a[j-1] = aa[p] aa = a.copy() j -=1 #3 elif i == j: pass elif (j-i)%2 == 0: for p in range(i-1,int(j/2)):#1,2 if j == p: pass else: a[p] = aa[j-1] #2,5 변경, 1,3 a[j-1]=aa[p] aa = a.copy() j -=1 #4 for n in range(n): print(str(a[n])+' ', end = '')

근데 길이도 너무 길고.. 제출해도 계속 반례가 생겼음 ㅠㅠㅠ
그리고 느낌 상.. 리스트 일부를 역순으로 만드는 방법이 있을 것 같아서 다시 도전함

n,m = map(int,input().split()) a = [g+1 for g in range(n)] for i in range(m): i, j = map(int,input().split()) if i-1 == 0: a[i-1:j] = a[j-1::-1] else: a[i-1:j] = a[j-1:i-2:-1] print(*a)

두번째에선 질문 게시판 슬쩍 참고해봤음!

a[i-1:j] = a[j-1::-1]
이건 리스트 내의 원소를 역순으로 만드는 방법이고

print(*a)는 리스트 내 원소를 하나씩 출력해주는 코드로

for n in range(n): 
    print(str(a[n])+' ', end = '')

이것과 동일하다

320x100

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.