본문 바로가기

전체 글400

013 카드2 첫번째 코드 신경써야 할 부분!! deque를 이용하자!!!! 1. 처음 하나의 원소 제거는 popleft() 2. 다음 원소 제거도 popleft() 3. deque는 리스트의 특성과 비슷하므로 원소를 추가할 때 append 함수를 사용하면 된다! 4. 위 과정을 언제까지 반복한다? 원소 하나가 남을 때까지 import sys input = sys.stdin.readline from collections import deque n = int(input()) deq= deque(range(1, n+1)) while len(deq)>1: deq.popleft() deq.append(deq.popleft()) print(*deq) 통과! 가볍게 풀었다! 뿌우듯:) 링크 https://github.com/or.. 2024. 4. 22.
번호표 교환 첫번째 코드 사실 문제 이해에서 애를 먹었다... 자신이 갖고 있는 카드가 있고 그것과 별개로 m번까지의 숫자 카드를 주면서 m으로 자신이 갖고 있는 카드를 나누어 나머지가 크면 바꾸고 아니면 바꾸지 않는 코드이다! 이해 후에는 쉬웠다. 버블 정렬을 할 때 사용한 코드를 사용하면 편한 느낌이랄까? import sys input = sys.stdin.readline n, m = map(int, input().split()) A = [] for _ in range(n): A.append(int(input())) for i in range(1, m+1): for j in range(n-1): if A[j] % i > A[j+1] % i: tmp = A[j] A[j] = A[j+1] A[j+1] = tmp fo.. 2024. 4. 22.
정렬 알고리즘 - 버블 (bubble) 데이터의 인접 요소끼리 비교하고, swap 연산을 수행하며 정렬하는 방식 - 선택 (selection) 데이터에서 가장 크거나 작은 데이터를찾아가 선택을 반복하면서 정렬하는 방식 - 삽입 (insertion) 대상을 선택해 정렬된 영역에서 선택 데이터의 적절한 위치를 찾아 삽입하면서 정렬하는 형식 - 퀵 (quick) pivot 값을 선정해 해당 값을 기준으로 정렬하는 방식 - 병합 (merge) 이미 정렬된 부분집합들을 효율적으로 병합해 전체를 정렬하는 방식 - 기수 (radix) 데이터의 자릿수를 바탕으로 비교해 데이터를 정렬하는 방식 2024. 4. 21.
정수 내림차순으로 배치하기 첫번째 코드 먼저 이 문제를 보고 버블 소트로 풀어보고 싶었다. 그렇기 때문에 붙어 있는 숫자를 각각 리스트로 나누어 넣었어야 했다. 맨 뒤에서부터 버블 소트의 과정을 통해 큰 수를 앞으로 swap 하는 과정을 거쳤고, 한번의 loop가 종료되면 맨 앞의 수는 고정하고 다음 수부터 버블 소트를 진행했다. 이런 과정을 끝까지 반복하면 리스트에 내림차순으로 숫자가 정렬된다. 그리고 다시 하나의 숫자를 만들기 위해 붙이는 과정을 진행한다. def solution(n): number = str(n) N = [] for i in number: N.append(int(i)) for i in range(len(N), 0, -1): for j in range(i-1): if N[j] 2024. 4. 21.
나머지가 1이 되는 수 찾기 첫번째 코드 n을 x로 나누었을 적어도 n-1에서는 나누어진다. 그러므로 n-1까지 진행한다. 또한 그 전에 나누어지는 경우도 있다. 최소의 수를 찾는 문제이므로 1부터 n-1까지 나머지를 확인하다 중간에 나머지가 1인 경우 더 이상 계산하지 않는다. def solution(n): for i in range(1, n): if n % i == 1: break return i 통과! 링크 https://github.com/ornni/programmers/tree/main/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4/1/87389.%E2%80%85%EB%82%98%EB%A8%B8%EC%A7%80%EA%B0%80%E2%80%851%EC%9D%B4%E2%80%.. 2024. 4. 20.
스택 & 큐 스택 stack - 삽입 & 삭제 연산으로 후입선출 (Last-in First-out) 사용 - 삽입과 삭제가 한 쪽에서만 일어남 - 깊이 우선 탐색(Depth First Search), 백트래킹 종류에 효과적 - "후입선출" 개념 자체가 재귀 함수 알고리즘 원리와 비슷 그림으로 이해하면 다음과 같다 큐 Queue - deque로 구현 - 삽입 & 삭제 연산이 선입선출 (First-in First-out) 이용 - 먼저 들어온 데이터가 먼저 나가는 구조 - 삽입과 삭제가 양방향으로 일어남 - 너비 우선 탐색(Breath First Search)에 효과적 그림으로 이해하면 다음과 같다 우선순위 큐 Priority Queue - 값이 들어간 순서와 상관없이 우선순위가 높은 데이터가 먼저 나옴 - front에.. 2024. 4. 20.
728x90