반응형

algorithm 6

[선택 알고리즘] - QuickSelect

알고리즘 설명 Quickselect 알고리즘은 k번째 원소를 찾는 알고리즘입니다. 일반적으로 정렬되지 않은 리스트에서 k번째로 작은 원소를 찾는 데 사용됩니다. 물론, 정렬된 리스트에서도 사용할 수 있습니다. 평균적으로 "O(n)"의 시간 복잡도를 가지며, 최악의 경우 "O(n^2)"의 시간 복잡도를 가집니다. 하지만 이런 경우는 매우 드뭅니다. 따라서 일반적인 정렬 알고리즘보다 효율적인 방법입니다. 알고리즘 동작 방식 1. 리스트에서 임의의 원소를 피벗으로 선택합니다. 2. 리스트를 피벗을 기준으로 분할하여, 피벗보다 작은 원소는 왼쪽, 큰 원소는 오른쪽에 위치시킵니다. 3. k번째로 작은 원소가 왼쪽에 위치해 있으면, 왼쪽 부분 리스트에서 Quickselect 알고리즘을 재수행합니다. 4. k번째로 ..

알고리즘 2023.04.03

SWEA 4834번 - 숫자 카드 문제 풀이 [python]

난이도 - D2 https://swexpertacademy.com/main/learn/course/lectureProblemViewer.do SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com [문제] 0에서 9까지 숫자가 적힌 N장의 카드가 주어진다. 가장 많은 카드에 적힌 숫자와 카드가 몇 장인지 출력하는 프로그램을 만드시오. 카드 장수가 같을 때는 적힌 숫자가 큰 쪽을 출력한다. [입력] 첫 줄에 테스트 케이스 개수 T가 주어진다. ( 1 ≤ T ≤ 50 ) 다음 줄부터 테스트케이스의 첫 줄에 카드 장수 N이 주어진다. ( 5 ≤ N ≤ 100 ) 다음 줄에 N개의 숫자 ai가 여백없이 주어진다. (0으로 시..

SWEA 2023.02.06

그리디 알고리즘(Greedy Algorithm)

안녕하세요, 오늘은 그리디 알고리즘에 대해서 알아보려고 합니다. 그리디 알고리즘은 많은 알고리즘 중에서 매우 직관적이고 효율적인 방법을 제공하는 알고리즘입니다. 복잡한 문제를 해결하는 데 있어서 현재 상황에서 가장 좋아 보이는 선택을 하는 방법을 취합니다. 그리디 알고리즘(Greedy Algorithm)이란? 그리디 알고리즘은 각 단계에서 가장 최적이라고 생각되는 결정을 하도록 설계된 알고리즘입니다. 이러한 방식은 전체적인 최적화를 보장하지는 않지만, 각 단계에서의 지역적인 최적화를 통해 문제를 단순화하고 빠르게 해결할 수 있는 장점이 있습니다. 대표적 그리디 알고리즘 예제 [거스름돈] 거스름돈이 500원, 100원, 50원, 10원짜리 동전이 무한히 존재한다고 가정 손님에게 거슬러 줘야 할 돈이 N원일..

알고리즘 2023.02.04

백준 10804번 - 카드 역배치 [python]

Python 코드 n = list(range(21)) for _ in range(10): s, e = map(int, input().split()) for i in range((e-s+1) // 2): n[s+i], n[e-i] = n[e-i], n[s+i] n.pop(0) for x in n: print(x, end=' ') Python 코드 풀이 1. 코드에 대한 전체적인 풀이 해당 문제는 입력 카드 20장 중 같은 규칙으로 카드의 위치를 역순으로 바꾸고 누적 시킨 다음 최종 마지막 카드들의 배치를 구하는 문제이다. 20개의 카드를 리스트로 만들었다. 10개의 구간으로 나눠서 반복, s, e 변수에 각각 구간을 담아서 반복 했다. 첫 번째 구간이 돌았을때 역순으로 바꿔주기 위해 (e-s+1) // 2..

BOJ 2023.02.04

SWEA 4828번 - min max 문제 풀이 [python]

난이도 - D2 https://swexpertacademy.com/main/learn/course/lectureProblemViewer.do SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com [문제] N개의 양의 정수에서 가장 큰 수와 가장 작은 수의 차이를 출력하시오. [입력] 첫 줄에 테스트 케이스의 수 T가 주어진다. ( 1 ≤ T ≤ 50 ) 각 케이스의 첫 줄에 양수의 개수 N이 주어진다. ( 5 ≤ N ≤ 1000 ) 다음 줄에 N개의 양수 ai가 주어진다. ( 1 ≤ ai≤ 1000000 ) [출력] 각 줄마다 "#T" (T는 테스트 케이스 번호)를 출력한 뒤, 답을 출력한다. [코드] T = int..

SWEA 2023.02.01

프로그래머스 - 구슬을 나누는 경우의 수 [Python]

난이도 - Lv.0 https://school.programmers.co.kr/learn/courses/30/lessons/120840 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr [문제] 문제 설명 머쓱이는 구슬을 친구들에게 나누어주려고 합니다. 구슬은 모두 다르게 생겼습니다. 머쓱이가 갖고 있는 구슬의 개수 balls와 친구들에게 나누어 줄 구슬 개수 share이 매개변수로 주어질 때, balls개의 구슬 중 share개의 구슬을 고르는 가능한 모든 경우의 수를 return 하는 solution 함수를 완성해주세요. 제한사항 1 ≤ balls ≤ 3..

프로그래머스 2023.01.30
반응형