백준 [10811.바구니뒤집기] | Python
✏️ 문제
https://www.acmicpc.net/problem/10811
10811번: 바구니 뒤집기
도현이는 바구니를 총 N개 가지고 있고, 각각의 바구니에는 1번부터 N번까지 번호가 순서대로 적혀져 있다. 바구니는 일렬로 놓여져 있고, 가장 왼쪽 바구니를 1번째 바구니, 그 다음 바구니를 2
www.acmicpc.net
✏️ 풀이방법
1. 역순으로 만드는 m번의 방법을 리스트(seq)에 담는다.
2. 바구니의 번호 1부터n까지를 리스트(basket)에 담는다.
3. i번째부터 j번째까지의 특정범위만 인덱스를 거꾸로 해서 리스트(basket)를 바꾼다.
4. 3번의 과정을 반복수행한다.
📌 코드
n,m = map(int,input().split())
seq = [] #역순으로 만드는 방법 담는 리스트
for _ in range(m):
seq.append(list(map(int,input().split())))
basket = [i+1 for i in range(n)] #1부터n까지의 바구니의 번호를 담는 리스트
for x in range(len(seq)):
i = seq[x][0]
j = seq[x][1]
basket[i-1:j] = reversed(basket[i-1:j]) #특정범위만 역순으로 해서 basket리스트에 다시 담기
print(' '.join([str(_) for _ in basket])) #리스트의 요소만 출력
📌 결과
5 4
1 2
3 4
1 4
2 2
3 4 1 2 5
🤔 시행착오.1
n,m = map(int,input().split())
seq = []
for _ in range(m):
seq.append(list(map(int,input().split())))
basket = [i+1 for i in range(n)]
for x in range(len(seq)):
i = seq[x][0]
j = seq[x][1]
basket[i-1:j] = reversed(basket[i-1:j])
print(basket)
5 4
1 2
3 4
1 4
2 2
[3, 4, 1, 2, 5]
- 출력형식이 리스트형식이라 제출형식에 맞지 않음
🤔 시행착오.2
n,m = map(int,input().split())
seq = []
for _ in range(m):
seq.append(list(map(int,input().split())))
basket = [i+1 for i in range(n)]
for x in range(len(seq)):
i = seq[x][0]
j = seq[x][1]
basket[i-1:j] = basket[j:i-1:-1]
print(basket)
5 4
1 2
3 4
1 4
2 2
[5, 5, 5, 2, 5]
- basket[j:i-1:-1]슬라이싱으로 역순으로 출력하려고 -1을 사용했으나 마지막 원소를 선택해서 basket에 대입
🔎 다른풀이
n,m = map(int, input().split())
basket = [i for i in range(1,n+1)]
temp = 0
for x in range(m):
i,j = map(int, input().split())
temp = basket[i-1:j]
temp.reverse()
basket[i-1:j] = temp
for x in range(n):
print(basket[x],end=" ")
- 리스트로 입력 안받지 않고, i,j에 각각 입력받아서 i,j로 연산 가능
- temp를 활용해서 reverse함수 연산 가능
📒 다시보기
[Python] 13. reverse()메소드와 reversed()함수
reverse() 메소드 reverse()는 메소드로 특정 자료(리스트)에 대해 요소를 역순으로 뒤집어 주는 기능을 수행 메소드는 반환값이 없기 때문에 기존 객체(리스트)의 요소를 역순으로 뒤집어 저장 ex_list
somin0416.tistory.com
[Python] 17. 리스트 원소를 한 줄로 출력하기
보통 for문으로 원소를 출력하면 다음과 같다. 아래와 같이 하나씩 출력된 후 개행문자가 포함되는 것이 아닌 가로로 한 줄에 출력하고자 한다. ex_list = [1,2,3,4,5] for i in ex_list: print(i) #출력 1 2 3 4 5
somin0416.tistory.com