알고리즘 공부💥/JUNGOL 49

[jungol] Intermediate_Coder / 분할과정복 / 1335 / T색종이 만들기(영역구분) / python

http://www.jungol.co.kr/bbs/board.php?bo_table=pbank&wr_id=614&sca=3010 JUNGOL www.jungol.co.kr 👀문제접근 1. 재귀함수를 이용해서 분할과 정복하자 2. 사각형의 왼쪽 위 좌표와 사각형 변의 길이를 파라미터로 갱신 3. 만약 사각형 내에 다른 색깔이 공존하면 왼쪽 위 좌표와 변의 길이를 4등분으로 조절하여 재귀함수 호출 4. 사각형 내에 색깔이 하나밖에 없다면 그 전역변수로 선언된 색깔 카운팅 + 1 🌈코드구현 N = int(input()) board = [list(map(int, input().split())) for _ in range(N)] blue = 0 white = 0 def check(x, y, size): globa..

[jungol] Intermediate_Coder / 분할과정복 / 4523 / Tutorial: STL Sort 1 / python

http://www.jungol.co.kr/bbs/board.php?bo_table=pbank&wr_id=3882&sca=30 JUNGOL www.jungol.co.kr import copy N = int(input()) N_list = list(map(int, input().split())) s, e = map(int, input().split()) copy_list = copy.deepcopy(N_list) slice_sort = copy_list[s:e+1] slice_sort.sort() j = 0 for i in range(s, e+1): copy_list[i] = slice_sort[j] j += 1 N_list.sort() print(*copy_list) print(*N_list)

[jungol] Intermediate_Coder / 분할정복 / 3518 / Tutorial : 퀵소트(Quick Sort 빠른정렬) / python

3518 : Tutorial : 퀵소트(Quick Sort 빠른정렬) 제한시간1000 ms 메모리제한512 MB 해결횟수450 회 시도횟수1083 회 문제 [퀵소트(Quick Sort)] 퀵소트는 토니 호어(찰스 엔터니 리처드 호어 - Charles Antony Richard Hoare)가 개발한 알고리즘이다. 원소들간의 비교와 교환을 통하여 정렬하는 비교기반정렬 알고리즘이다. 원소들 중에 같은 값이 있는 경우 정렬후에 이들의 순서가 달라질 수 있어 불안정 정렬에 속한다. ( 3을 피봇으로 하고 전통적인 방법으로 하는 예 51, 52, 3, 2, 1) ( 22를 피봇으로 하고 아래 설명한 방법으로 하는 예 21, 3, 1, 22) ​ N개의 데이터를 정렬할 때, ​시간복잡도는 ​평균 O(N * logN)..

[jungol] Intermediate_Coder / 분할정복 / 1240 / 제곱근 / python

1240 : 제곱근 제한시간1000 ms 메모리제한32 MB 해결횟수739 회 시도횟수3640 회 문제 Korean English 임의의 정수 N이 주어졌을 때 N의 양의 제곱근의 정수부분을 출력하는 프로그램을 작성하라. 양의 제곱근이란 다음을 만족하는 수 X 를 뜻한다. N = X2 (X≥1) [ 주의 !!! ] sqrt와 같은 함수를 사용하지 말아야 하며 stdio.h 와 iostream 등 입출력 헤더에 있는 함수만이 사용가능하다. 이를 어길 경우 0점 처리한다. 입력형식 입력에는 263-1 이하의 양의 정수 N이 입력된다 출력형식 N의 제곱근의 정수부분을 출력한다. 입력1 8 출력2 2 입력2 16 출력2 4 http://www.jungol.co.kr/bbs/board.php?bo_table=pb..

[jungol] Beginner_Coder / 재귀 / 2567 / 싸이클 / python

2567 : 싸이클 제한시간1000 ms 메모리제한128 MB 해결횟수455 회 시도횟수933 회 문제 두 자연수 N과 P를 가지고 다음 과정을 거쳐서 나오는 숫자들을 차례대로 출력해보자. 처음 출력하는 숫자는 N이고, 두 번째 이후 출력하는 숫자들은 N을 곱하고 P로 나눈 나머지를 구하는 과정을 반복하여 구한다. 즉, 먼저 N에 N을 곱하고, 이 수를 P로 나눈 나머지를 두 번째에 출력한다. 다음에는 이 나머지에 N을 곱하고 P로 나눈 나머지를 출력한다. 다음에는 이 나머지에 N을 곱한 후 P로 나눈 나머지를 출력한다. 이 과정을 계속 반복해보면 출력되는 숫자들에는 반복되는 부분이 있다. 예를 들어서, N=67, P=31인 경우를 생각해보자. 처음 출력되는 숫자는 67이고, 두 번째로 출력되는 숫자는 ..

[jungol] Beginner_Coder / 재귀 / 2817 / 로또(Lotto) / python

2817 : 로또(Lotto) 제한시간1000 ms 메모리제한128 MB 해결횟수715 회 시도횟수1135 회 문제 로또에서는 {1, 2, 3, ... , 48, 49} 번호 중에 6개를 선택해야 한다. 로또 번호를 선택하는 데는 여러 가지 전략이 있겠지만 우리는 49개의 수 중에서 K( 6 < K < 13)개가 이미 선택되어 있다고 가정하고 이 선택된 수들로 만들 수 있는 로또 번호를 만들어 보기로 한다. 예를 들어 K = 8이고 선택된 수들의 집합 S = {1,2,3,5,8,13,21,34} 라고 할 때, 가능한 로또 번호는 [1,2,3,5,8,13], [1,2,3,5,8,21], [1,2,3,5,8,34], [1,2,3,5,13,21], ... [3,5,8,13,21,34]. 로 28개가 있다. 수..

[jungol] Beginner_Coder / 재귀 / 1021 / 장난감조립 / python

1021 : 장난감조립 제한시간1000 ms 메모리제한32 MB 해결횟수646 회 시도횟수1416 회 문제 우리는 어떤 장난감을 여러 가지 부품으로 조립하여 만들려고 한다. 이 장난감을 만드는데는 기본 부품과 그 기본 부품으로 조립하여 만든 중간 부품이 사용된다. 기본 부품은 다른 부품을 사용하여 조립될수 없는 부품이다. 중간 부품은 또 다른 중간 부품이나 기본 부품을 이용하여 만들어지는 부품이다. 예를 들어보자. 기본 부품으로서 1, 2, 3, 4가 있다. 중간 부품 5는 2개의 기본 부품 1과 2개의 기본 부품 2로 만들어진다. 그리고 중간 부품 6은 2개의 중간 부품 5, 3개의 기본 부품 3과 4개의 기본 부품 4로 만들어진다. 마지막으로 장난감 완제품 7은 2개의 중간 부품 5, 3개의 중간 부..

[jungol] Beginner_Coder / 재귀 / 1161 / 하노이1 / python

1161 : 하노이1 제한시간5000 ms 메모리제한32 MB 해결횟수718 회 시도횟수1028 회 문제 하노이의 탑에 대한 전설은 아래와 같다. 고대 인도의 베나레스(현재 베트남의 하노이)​에 있는 한 사원에는 세상의 중심을 나타내는 큰 돔이 있고 그 안에 세 개의 다이아몬드 기둥이 동판 위에 세워져 있다. 기둥 가운데 하나에는 신이 64개의 순금 원판을 끼워 놓았다. 가장 큰 원판이 바닥에 놓여 있고, 나머지 원판들이 점점 작아지며 꼭대기까지 쌓여 있다. 이것은 신성한 브라흐마의 탑이다. 브라흐마의 지시에 따라 승려들은 모든 원판을 다른 기둥으로 옮기기 위해 밤낮 없이 차례로 제단에 올라 규칙에 따라 원판을 하나씩 옮긴다. 이 일이 끝날 때, 탑은 무너지고 세상은 종말을 맞이하게 된다. 기둥을 1, ..

[jungol] Beginner_Coder / 자료처리 / 1221 / 후위표기법1 / python

1221 : 후위표기법1 제한시간1000 ms 메모리제한32 MB 해결횟수311 회 시도횟수926 회 문제 우리가 일반적으로 사용하는 계산방식은 중위표기법(Infix Notation)이라 하는데, A + B와 같이 피연산자 'A'와 'B' 중간에 연산자 '+'가 위치하여 이렇게 불린다. 컴퓨터공학에서는 후위표기법 (Postfix Notation)을 많이 사용하는데, 후위표기법은 A B + 와 같이 피연산자 'A'와 'B'의 뒤에 연산자 '+'가 위치한 표기법을 말한다. 중위표기법에서 (5+8)*2 와 같은 수식은 '*'가 '+'보다 연산자 우선순위가 높으므로 앞의 수식 에서처럼 5+8 을 먼저 계산해야한다면 괄호를 사용해야한다. 하지만 수식 (5+8)*2 을 후위표기법으로 바꾸면 5 8 + 2 * 와 같..