728x90
반응형
https://www.acmicpc.net/problem/11582
문제를 풀면서 몰랐던 개념
- 분할 정복 알고리즘
풀고자 하는 어려운 문제를 쪼갠 후, 쪼갠 문제를 합치는 것을 분할 정복(Divide and Conquer)이라고 한다.
문제의 접근 방법
이 문제에서는 N과 K값 모두 2의 거듭제곱 꼴이므로 위와 같은 규칙이 성립될 수 있다.
내가 막혔던 부분
인덱스 슬라이싱으로 끊어서 저장할 생각(한계) -> for문에서 증가치를 설정해주어서 그 규칙에 맞게 반복적인 작업을 수행하도록 설정
문제 풀이 방법
(1) 치킨집의 개수 N개 입력 받기
(2) N개의 치킨집의 맛의 수치들 입력 받아 리스트에 저장
(3) 정렬을 진행중인 회원들의 수 k명 입력 받기
(4) 위 그림처럼 index 변수를 하나 선언해서 N // k 값을 넣어주기
(5) 최종 값을 넣을 빈 리스트 arr 선언
(6) 0부터 N까지, index 값 만큼의 증가치를 설정해준 for문을 돌리기 (ex) N = 8, k = 2라면 index = 4 ----> 리스트 원소를 4개씩 끊어서 저장 + 총 2번의 반복문 실행
(7) arr에 치킨집 맛의 수치들이 저장되어 있는 리스트 c의 원소들을 i부터 i+index 값까지 잘라서 저장해주기
(8) 이를 오름차순으로 정렬해주기
(9) 중첩 반복문을 구현해서 위의 과정을 통해 arr에 저장되어 있는 값들을 같은 줄에 공백을 두고 하나씩 출력하기
소스코드
N = int(input())
c = list(map(int, input().split()))
k = int(input())
index = N // k
arr = []
for i in range(0,N,index):
arr = c[i:i+index]
arr.sort()
for j in arr:
print(j, end=' ')
728x90
반응형
'백준 write-up > 정렬 & 그리디' 카테고리의 다른 글
[백준] 스텔라(STELLA)가 치킨을 선물했어요 : 15905번 - Python (0) | 2021.07.30 |
---|---|
[백준] 너의 핸들은 : 15819번 - Python (0) | 2021.07.30 |
[백준] 귀찮음 : 16208번 - Python (0) | 2021.07.29 |
[백준] 줄 세우기 : 11536번 - Python (0) | 2021.07.29 |
[백준] 제 2회 IUPC는 잘 개최될 수 있을까? : 12788번 - Python (0) | 2021.07.29 |