Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 |
Tags
- 알기쉬운 알고리즘
- coding test
- list 컬렉션
- insertion sort
- C 언어 코딩 도장
- datastructure
- 메모리구조
- Stack
- JSON
- C programming
- 이것이 자바다
- 윤성우의 열혈 자료구조
- Selection Sorting
- stream
- Algorithm
- 윤성우 열혈자료구조
- R
- Serialization
- s
- Graph
- 이스케이프 문자
- 혼자 공부하는 C언어
- buffer
Archives
- Today
- Total
Engineering Note
카드 역배치(정올 기출) 본문
it 취업을 위한 알고리즘 문제 풀이
문제
코드
import sys
#sys.stdin = open("input.txt","rt")
card = list(range(21))
for _ in range(10):
a, b = map(int,input().split())
for i in range((b-a+1)//2):
card[a+i], card[b-i] = card[b-i], card[a+i]
card.pop(0)
for x in card:
print(x,end=" ")
문제해결방법
- list, range를 이용해 0부터 20 인덱스에 각각 인덱스 값과 같은 숫자 값을 갖는 리스트를 생성
- 역순으로 바꾸어 주어야 하는 구간 값을 a,b에 입력을 받는다.
- 그리고 a,b 값이 2와 7일 때 2,7구간의 값을 역순으로 바꾸어 주어야하는데 역순이 되기 위해서는 2인덱스와 7인덱스의 값을 바꾸고, 3 인덱스와 6인덱스의 값을 바꾸고 4인덱스와 5인덱스의 값을 바꾸어 주면된다.
- 이때 이렇게 바꾸는 행위는 3번 일어나는데 이는 (7-2 + 1)//2 => 3을 통해 구할 수 있다.
- 만약 a,b값이 3,7로 3인덱스와 7인덱스 4인덱스와 6인덱스 그리고 5인덱스가 짝을 이루지 않을 때에는 2번 바꾸는 행위를 하는데 이때에도 (7-3 + 1)//2 =>2 를 통해 구할 수 있다.
- 이를 일반화 하면 (b-a+1)//2로 나타낼 수 있다.
- 이렇게 바꾸어준 리스트는 0번 인덱스의 0을 포함하고 있고 출력은 1부터 출력하면 되기 때문에 pop함수로 0번 인덱스의 값을 제거해준후 리스트의 각 요소의 값을 출력해주었다.
'Problem Solving > 파이썬 알고리즘 문제풀이(코딩테스트 대비)' 카테고리의 다른 글
송아지 찾기 (0) | 2021.06.15 |
---|---|
두 리스트 합치기 (0) | 2021.06.09 |
숫자만 추출 (0) | 2021.06.08 |
회문 문자열 검사 (0) | 2021.06.07 |
점수계산 (0) | 2021.06.01 |
Comments