분류 전체보기 24

파이썬 deque 함수

https://siloam72761.tistory.com/entry/%ED%8C%8C%EC%9D%B4%EC%8D%AC%EC%9E%90%EB%A3%8C%EA%B5%AC%EC%A1%B0-%EB%8D%B0%ED%81%ACdeque%EC%97%90-%EB%8C%80%ED%95%9C-%EB%AA%A8%EB%93%A0-%EA%B2%83-%EC%A0%95%EC%9D%98-%ED%95%A8%EC%88%98-%ED%99%9C%EC%9A%A9참고해서 작성했습니다.  Deque 함수들함수실행시간설명append(x)O(1)데크의 오른쪽에 x를 추가합니다.appendleft(x)O(1)데크의 왼쪽에 x를 추가합니다.clear()O(1)데크에서 모든 요소를 제거하고 길이가 0인 상태로 만듭니다.copy()O(N)데크의 얕은 복사..

1541 잃어버린 괄호 (python)

문제 풀이방법괄호를 가지고 연산의 최솟값을 만들기 위해서는 - 다음 덧셈 부분을 전부 묶어주면 된다.ex) 50-40+45라는 입력이 들어왔을 때, 50-(40+45)로 묶으면 된다.ex) 50+10-40+45+35-25+35라는 입력이 들어왔을 때, 50+10-(40+45+35)-(25+35) 풀이방법을 토대로 한 알고리즘이다.1. - 로 나눈다.    아까 전 50-40+45+35-25+35가 있다면 ['50+10', '40+45+35', '25+35']가 된다.2. 첫 부분은 괄호로 묶어도 의미가 없으니 첫 부분(50+10)은 전부 더한 뒤 sum에 저장한다.3. 나머지 부분(40+45+35, ...) 은 전부 더한 뒤 sum에서 빼준다. 코드import sysinput = sys.stdin.rea..

2. 나누어 풀어보기

알고리즘으로 생각하기 - 양성봉 참고 백준 문제를 풀다가 알고리즘 풀이가 잘 기억이 나지 않아서교과서에 있는 알고리즘 코드를 외우기 위해 작성 선택 정렬설명해당 순서에 원소를 넣을 위치는 이미 정해져 있고, 그 위치에 어떤 원소를 넣을지 선택하는 알고리즘 시간 복잡도O(n^2) 알고리즘[1] 주어진 배열 중에 최소값을 찾는다.[2] 그 값을 맨 앞에 위치한 값과 교체한다. (pass)[3] 맨 처음 위치를 뺀 나머지 배열을 같은 방법으로 교체한다.[4] 하나의 원소만 남을 때까지 위의 1~3 과정을 반복한다. 코드def selection_sort(arr):    for i in range(len(arr) - 1):        min_idx = i        for j in range(i + 1, le..

알고리즘 코드 2024.07.04

1. 순환과 기본적인 알고리즘

알고리즘으로 생각하기 - 양성봉 참고 백준 문제를 풀다가 알고리즘 풀이가 잘 기억이 나지 않아서교과서에 있는 알고리즘 코드를 외우기 위해 작성 순환 팩토리얼def factorial(n):    if n == 1:        return 1    else:        return n * factorial(n-1)    print(factorial(5))5 * 4 * 3 * 2 * 1 팩토리얼 반복문factorial = 1for i in range(1, 6):    factorial *= iprint(factorial)1 * 2 * 3 * 4 * 5 팩토리얼 계산은 순환 사용보다 반복문 이용하는 것이 메모리를 훨씬 적게 사용한다. 순차 탐색설명리스트에 값이 있고, 원하는 값을 첫 번째부터 비교하면서 그 ..

알고리즘 코드 2024.07.02

1074 Z (python)

풀이방법 DP문제이다. 2차원 배열을 4등분하기좌표 r, c가 2배가 됨에 따라 값이 4의 배수로 확장하는 규칙을 찾을 수 있음. (r % 2, c % 2)로 현재 위치 (r, c)가 속한 2x2 배열에서의 상대적인 위치를 나타냄2*(r % 2) + (c % 2)로 상대적인 위치를 기반으로 한 사분면의 인덱스를 계산재귀적으로 이전 단계로 이동:배열을 2^N x 2^N에서 2^(N-1) x 2^(N-1)로 줄임int(r / 2), int(c / 2)는 현재 위치를 절반으로 나누어 새로운 위치를 계산 현재 위치에 대한 순서 합산:4 * sol(N-1, int(r/2), int(c/2))는 이전 단계에서 얻은 순서를 현재 사분면 크기(4배)만큼 확장2*(r % 2) + (c % 2)는 현재 단계에서의 상대적인..

1012 유기농 배추 (python)

문제DFS 사용 풀이# DFS를 사용한 풀이import syssys.setrecursionlimit(10000)input = sys.stdin.readlinet = int(input())dx = [-1, 1, 0, 0]dy = [0, 0, -1, 1]def dfs(x, y):    if x -1 or x >= n or y -1 or y >= m:        return False        if graph[x][y] == 1:        graph[x][y] = 0        for i in range(4):            dfs(x + dx[i], y + dy[i])        return True    return Falsefor _ in range(t):    m, n, k = m..

11866 요세푸스 문제 0 (python)

문제 Deque 사용import sysfrom collections import dequen, k = map(int, input().split())deq = deque([i for i in range(1, n+1)])res = []while len(deq) != 0:    for _ in range(k-1):        # k-1번째 노드까지 deq 맨 뒤로 이동        deq.append(deq.popleft())    # k번째 노드 삭제 후 결과 배열에 추가    res.append(str(deq.popleft())) print('+', '.join(res)+'>') 리스트 사용import sysinput = sys.stdin.readlinen, k = map(int, input().spli..