코딩 테스트/Baekjoon

B2 10811번. 바구니 뒤집기

  • -
728x90
반응형

문제 보기 : 10811번: 바구니 뒤집기 (acmicpc.net)


문제


작성 코드

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
728x90

'코딩 테스트 > Baekjoon' 카테고리의 다른 글

B1 1157. 단어 공부  (0) 2024.07.18
B2 10809. 알파벳 찾기  (0) 2024.07.18
B2 10813. 공 바꾸기  (0) 2024.07.15
B3 10810번. 공 넣기  (0) 2024.07.15
B1 1110. 더하기 사이클  (0) 2024.07.14
Contents

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

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